我正在尝试这样做:
for line in open('some.txt'):
它说找不到文件。我的文件与我的 python 程序方向相同。怎么了?我以为它检查了目录
解决方案:我使用os.listdir()
并发现我的文件实际上名为 some.txt.txt
相对路径是从当前工作目录解析的。
例如,假设我有这个目录结构:
/home/joe
├── data
│ └── numbers.txt
└── programs
└── process.py
如果我在我的主目录 ( /home/joe
) 中,那么我可以通过 引用 Python 脚本programs/process.py
和通过data/numbers.txt
. 您还可以选择使用绝对路径,例如/home/joe/programs/process.py
和/home/joe/data/numbers.txt
。
您可以使用 访问父目录..
。例如,如果我在programs
目录中并且我想访问numbers.txt
,我可以使用../data/numbers.txt
(或像以前一样的绝对路径)。
您的脚本可以使用 检查其当前工作目录os.getcwd
并使用 更改当前工作目录os.chdir
。
需要注意的关键是,虽然当前工作目录和脚本所在的目录可能相同,但情况不一定如此。如果您想访问与脚本位于同一目录中的文件,而不管当前工作目录是什么,您可以将一些东西链接在一起:
__file__
是一个预定义的全局变量,对应于提供给 Python 可执行文件的脚本路径。os.path.dirname
让您从中获取目录。os.path.join
允许您组合该目录和要访问的文件的名称。它使用与当前工作目录相同的目录。采用
import os
os.path.abspath(os.curdir)
找出那在哪里。
要添加到 icktoofay 的答案,打开相对于脚本文件夹的文件,您可以执行以下操作。
dirname = os.path.dirname(__file__)
path = os.path.join(dirname, 'some.txt')
for line in open(path):
...
它应该是您从中运行 python 脚本的目录。
使用它来打印它:
import os
print os.getcwd()