[英]How to import files in python using sys.path.append?
我的桌面上有两个目录, DIR1
和DIR2
,它们包含以下文件:
DIR1:
file1.py
DIR2:
file2.py myfile.txt
这些文件包含以下内容:
import sys
sys.path.append('.')
sys.path.append('../DIR2')
import file2
import sys
sys.path.append( '.' )
sys.path.append( '../DIR2' )
MY_FILE = "myfile.txt"
myfile = open(MY_FILE)
some text
现在,有两种情况。 第一个工作,第二个给出错误。
我cd
到DIR2
和运行file2.py
它运行没有问题。
我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
在同一目录中file2.py
会抛出错误? 谢谢。
您可以使用模块的__file__
属性创建相对于模块的路径。 例如:
myfile = open(os.path.join(
os.path.dirname(__file__),
MY_FILE))
无论您在何处启动脚本,都应该按照自己的意愿行事。
更换
MY_FILE = "myfile.txt"
myfile = open(MY_FILE)
同
MY_FILE = os.path.join("DIR2", "myfile.txt")
myfile = open(MY_FILE)
这就是你的问题所指的评论所指的相对路径解决方案。 这假设您从myfile.txt中的目录运行它...所以不太理想。
如果你知道my_file.txt总是和file2.py在同一个目录中那么你可以在file2中尝试这样的东西。
from os import path
fname = path.abspath(path.join(path.dirname(__file__), "my_file.txt"))
myfile = open(fname)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.