1

我正在尝试这样做:

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

它说找不到文件。我的文件与我的 python 程序方向相同。怎么了?我以为它检查了目录

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

4

4 回答 4

2

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

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

/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

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

  1. __file__是一个预定义的全局变量,对应于提供给 Python 可执行文件的脚本路径。
  2. os.path.dirname让您从中获取目录。
  3. os.path.join允许您组合该目录和要访问的文件的名称。
于 2013-09-29T03:22:30.187 回答
1

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

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

找出那在哪里。

于 2013-09-29T03:24:15.053 回答
1

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

dirname = os.path.dirname(__file__)
path = os.path.join(dirname, 'some.txt')
for line in open(path):
    ...
于 2013-09-29T03:31:05.783 回答
0

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

使用它来打印它:

import os
print os.getcwd()
于 2013-09-29T03:25:34.110 回答