open()默认使用什么目录?

时间:2013-09-29 03:16:59

标签: python file-io

我正在尝试这样做:

for line in open('some.txt'):

并且它说没有找到该文件。我的文件与我的python程序方向相同。怎么了?我认为它检查了目录

解决方案:我使用os.listdir()并发现我的文件实际上名为some.txt.txt

4 个答案:

答案 0 :(得分:2)

从当前工作目录解析相对路径。

例如,假设我有这样的目录结构:

/home/joe
├── data
│   └── numbers.txt
└── programs
    └── process.py

如果我在我的主目录(/home/joe)中,那么我可以通过programs/process.py引用Python脚本,通过data/numbers.txt引用数据文件。您也可以选择使用绝对路径,例如/home/joe/programs/process.py/home/joe/data/numbers.txt

您可以使用..访问父目录。例如,如果我在programs目录中并且我想访问numbers.txt,我可以使用../data/numbers.txt(或绝对路径,如前所述)。

您的脚本可以使用os.getcwd检查其当前工作目录,并使用os.chdir更改当前工作目录。

需要注意的关键是,虽然脚本在中的当前工作目录和目录可能是相同的,但情况不一定如此。如果要访问与脚本位于同一目录中的文件,而不管当前工作目录是什么,您可以将一些内容链接在一起:

  1. __file__是一个预定义的全局变量,对应于提供给Python可执行文件的脚本路径。
  2. os.path.dirname可让您从中获取目录。
  3. os.path.join允许您将该目录与要访问的文件的名称相结合。

答案 1 :(得分:1)

它使用与当前工作目录相同的目录。使用

import os
os.path.abspath(os.curdir)

找出它的位置。

答案 2 :(得分:1)

要添加icktoofay的答案,要打开相对于脚本文件夹的文件,您可以执行以下操作。

dirname = os.path.dirname(__file__)
path = os.path.join(dirname, 'some.txt')
for line in open(path):
    ...

答案 3 :(得分:0)

它应该是您运行python脚本的目录。

用它来打印它:

import os
print os.getcwd()