0

如何删除python中的路径相关问题?

例如,我在目录 TEST 中有一个模块 test.py

**test.py**
import os
file_path = os.getcwd() + '/../abc.txt'

f = open(file_path)
lines = f.readlines()
f.close

print lines

现在,当我在 TEST 目录之外执行上述程序时,它给了我错误:-

Traceback (most recent call last):
  File "TEST/test.py", line 4, in ?
    f = open(file_path)
IOError: [Errno 2] No such file or directory: 'abc.txt'

如何解决此类问题。基本上这只是我放弃的一个小例子。

我正在处理这样一个巨大的问题。

我正在使用现有的包,它只需要从它存在的那个目录运行,如何解决这类问题,以便我可以从我想要的任何地方运行程序。

或者能够处理在 TEST 目录内或 TEST 目录外运行的上述示例。

有什么帮助。?

4

2 回答 2

3

我认为最简单的事情是将当前工作目录更改为脚本文件之一:

import os
os.chdir(os.path.dirname(__file__))

但是,如果脚本还使用原始工作目录中的文件,这可能会导致问题。

于 2012-06-03T10:31:16.253 回答
0

您的代码正在查看当前工作目录,并将其用作查找所需文件的基础。正如您现在发现的那样,这几乎从来都不是一个好主意。

Emil Vikström 在回答中提到的解决方案是一个快速修复解决方案,但更正确的解决方案是不使用当前工作目录作为起点。

如另一个答案__file__中所述,解释器中不可用,但它是您的代码的绝佳解决方案。

将您的第二行重写为如下内容:

file_path = os.path.join(os.path.dirname(__file__), "..", "abc.txt")

这将获取当前文件所在的目录,首先将其加入..,然后加入abc.txt, 以创建您想要的路径。

You should fix similar usage of os.getcwd() elsewhere in your code in the same way.

于 2012-06-03T13:32:41.713 回答