我试图让一个包中的模块打开它的目录中的一个txt文件并读取它的内容。你知道吗
我的安排是这样的:
package
| __init__.py
| bar.py
| baz.py
| txt.txt
foo.py
这是txt.txt
的内容
a()
这是baz.py
的内容
def a():
with open("txt.txt") as file:
print(file.read())
这是bar.py
的内容
from .baz import a
def b():
a()
print("b()")
这是__init__.py
的内容
from .bar import b
def c():
b()
print("c()")
这是foo.py
的内容
from package import c
c()
运行时foo.py公司我本想得到的
a()
b()
c()
但我却犯了这个错误
Traceback (most recent call last):
File "foo.py", line 2, in <module>
c()
File "(...my full path...)\package\__init__.py", line 3, in c
b()
File "(...my full path...)\package\bar.py", line 3, in b
a()
File "(...my full path...)\package\baz.py", line 2, in a
with open("txt.txt") as file:
FileNotFoundError: [Errno 2] No such file or directory: 'txt.txt'
我把open
函数的参数"txt.txt"
改成了完整路径,结果成功了,但这并不是很有用,因为我必须使用相对路径,而且我不明白发生了什么。你知道吗
有什么建议吗?你知道吗
可以将
PYTHONPATH
环境变量设置为指向包,也可以将txt.txt
地址设置为相对于运行foo.py
的位置对于第一个选项,您可以执行以下操作:
PYTHONPATH=path/to/package python foo.py
对于第二个选项,首先将目录更改为package,然后运行foo.py
在Python中,路径是相对于调用脚本的,在本例中是
foo.py
。你知道吗如果您想从调用
foo.py
读取txt.txt
,您需要这样修改baz.py
或者可以使用^{} 和^{} 检索包路径,如下所示
相关问题 更多 >
编程相关推荐