【发布时间】:2015-08-27 10:07:32
【问题描述】:
我的桌面上有两个目录,DIR1 和 DIR2,其中包含以下文件:
DIR1:
file1.py
DIR2:
file2.py myfile.txt
文件包含以下内容:
file1.py
import sys
sys.path.append('.')
sys.path.append('../DIR2')
import file2
file2.py
import sys
sys.path.append( '.' )
sys.path.append( '../DIR2' )
MY_FILE = "myfile.txt"
myfile = open(MY_FILE)
我的文件.txt
some text
现在,有两种情况。第一个有效,第二个给出错误。
场景 1
我将cd 转换为DIR2 并运行file2.py,它运行没有问题。
场景 2
我 cd 进入 DIR1 并运行 file1.py 并抛出错误:
Traceback (most recent call last):
File "<absolute-path>/DIR1/file1.py", line 6, in <module>
import file2
File "../DIR2/file2.py", line 9, in <module>
myfile = open(MY_FILE)
IOError: [Errno 2] No such file or directory: 'myfile.txt'
但是,这对我来说毫无意义,因为我已使用命令 sys.path.append('../DIR2') 将路径附加到 file1.py。
为什么当file1.py 和file2.py 与myfile.txt 位于同一目录时会发生这种情况,但它会引发错误?谢谢你。
【问题讨论】:
-
Python 的
sys.path只影响 Python 查找模块的方式。如果你想open一个文件,sys.path是不涉及的。您的open失败,因为您没有从包含myfile.txt的目录中运行脚本。 -
好的,谢谢@larsks。但是,我如何影响 python 打开文件的方式?即我如何允许它从不同的目录打开文件?
-
@Hunle 使用该文件的完整相对路径,或者尽可能使用绝对路径。
-
您从未向我们展示过您是如何运行文件的。如果您在运行
file2之前更改为DIR2,这将解释您所看到的行为。如果您正在做其他事情,请向我们展示确切步骤。 -
这个问题的标题具有误导性,因为它是关于
open,而不是import。在 Google 上搜索如何使用sys.path.append()导入的人会发现这篇文章是在浪费时间 - 而大部分流量可能来自那里。
标签: python python-2.7 relative-path filepath sys