如何在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目录外运行的上述示例。
任何帮助。?
答案 0 :(得分:2)
我认为最简单的方法是将当前工作目录更改为脚本文件之一:
import os
os.chdir(os.path.dirname(__file__))
但是,如果脚本也处理原始工作目录中的文件,则可能会出现问题。
答案 1 :(得分:0)
您的代码正在查看当前工作目录,并将其用作查找所需文件的基础。这几乎从来都不是一个好主意,正如你现在所发现的那样。
EmilVikström在回答中提到的解决方案是一个quickfix解决方案,但更正确的解决方案是不使用当前工作目录作为起点。
正如在另一个答案中所提到的,__file__
在解释器中不可用,但它是您代码的绝佳解决方案。
将第二行重写为以下内容:
file_path = os.path.join(os.path.dirname(__file__), "..", "abc.txt")
这将获取当前文件所在的目录,首先使用..
然后使用abc.txt
加入,以创建所需的路径。
您应该以相同的方式在代码中的其他位置修复os.getcwd()
的类似用法。