繁体   English   中英

如何使用sys.path.append在python中导入文件?

[英]How to import files in python using sys.path.append?

我的桌面上有两个目录, DIR1DIR2 ,它们包含以下文件:

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) 

myfile.txt文件

some text

现在,有两种情况。 第一个工作,第二个给出错误。

场景1

cdDIR2和运行file2.py它运行没有问题。

情景2

cdDIR1和运行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.pymyfile.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM