Python首先在哪里查找文件?

时间:2009-11-03 16:46:25

标签: python file

我正在尝试学习如何在Python中解析.txt文件。这导致我打开翻译(终端> python)并玩游戏。但是,我似乎无法指定正确的路径。 Python首先在哪里看?

这是我的第一步:

    f = open("/Desktop/temp/myfile.txt","file1")

这显然不起作用。有人可以建议吗?

8 个答案:

答案 0 :(得分:9)

这不起作用,因为open的语法错误。

在翻译提示下试试这个:

>>> help(open)
Help on built-in function open in module __builtin__:

open(...)
    open(name[, mode[, buffering]]) -> file object

    Open a file using the file() type, returns a file object.

所以第二个参数是开放模式。 A quick check of the documentation我们会尝试这样做:

f = open("/Desktop/temp/myfile.txt","r")

答案 1 :(得分:8)

编辑:哦,是的,你的第二个论点是错误的。甚至没有注意到:)

Python查找您在文件打开时告诉它的位置。如果你打开/ home / malcmcmul中的解释器那么那将是活动目录。

如果指定路径,那就是它的外观。你确定/ Desktop / temp是一个有效的路径吗?我不知道很多设置,其中/ Desktop是这样的根文件夹。

一些例子:

  • 如果我有一个文件:/home/bartek/file1.txt

  • 我输入python将我的口译员放在目录/home/bartek/

  • 这将有效并获取file1.txt ok:f = open("file1.txt", "r")

  • 这不起作用:f = open("some_other_file.txt", "r")因为该文件位于某种目录中。

  • 只要我指定正确的路径,这将有效:f = open("/home/media/a_real_file.txt", "r")

答案 2 :(得分:2)

首先,第二个参数是权限位:“r”表示读取,“w”表示写入,“a”表示追加。 “file1”不应该在那里。

答案 3 :(得分:2)

尝试:

f = open('Desktop/temp/myfile.txt', 'r')

这将打开相对于当前目录的文件。如果要使用绝对路径打开文件,可以使用'/Desktop/temp/myfile.txt'。打开函数的第二个参数是模式(不知道你的例子中file1应该是什么意思)。

关于这个问题 - Python遵循OS方案 - 在当前目录中查找,如果寻找模块,则在sys.path之后查找。如果你想从某个子目录打开文件,请使用os.path.join,如:

import os
f = open(os.path.join('Desktop', 'temp', 'myfile.txt'), 'r')

然后你可以安全地摆脱'/'和'\'。

请参阅built-in open function的文档,了解有关使用开放函数的方法的更多信息。

答案 4 :(得分:0)

原始帖子没有这个小问题,但还要确保文件名参数使用'/'而不是'\'。文件检查器在其位置中使用了不正确的'/',这使我感到震惊。

'C:\ Users \ 20 \ Documents \ Projects \ Python \ test.csv'=不起作用

'C:/Users/20/Documents/Projects/Python/test.csv'=效果很好

答案 5 :(得分:0)

只需输入您的文件名并有您的数据.....它做什么?---->如果路径存在,则检查它是否为文件,然后打开并读取

import os
fn=input("enter a filename: ")
if os.path.exists(fn):
    if os.path.isfile(fn):
        with open(fn,"r") as x:
            data=x.read()
            print(data)
    else:
        print(fn,"is not a file: ")
else:
    print(fn,"file doesnt exist ")

答案 6 :(得分:0)

from pathlib import Path
import os

desired_directory = Path('C:/')
desired_directory = desired_directory / 'subfolder'
os.chdir(desired_directory)

这将迫使Python在您指定的路径中查看目录。如以下代码片段所示,当使用`subprocess.Popen'来使用二进制文件时,它工作得很好:

from subprocess import Popen
from shutil import which
instance_of_Popen = Popen(which('name_of_executable'))
print(instance_of_Popen.args)

答案 7 :(得分:-1)

此:

import os
os.path

应该告诉你python首先出现在哪里。当然,如果你指定绝对路径(就像你有的那样),那么这应该不重要。

另外,正如其他人所说的那样,你的第二个论点是错误的。要找到正确的方法,请尝试以下代码:

help(open)