如何从模块外部读取与 __main__.py 相同模块中包含的文件?
Posted
技术标签:
【中文标题】如何从模块外部读取与 __main__.py 相同模块中包含的文件?【英文标题】:How to read a file contained in same module as __main__.py from outside the module? 【发布时间】:2021-11-23 19:35:11 【问题描述】:这是我的文件树:
foo
|-- bar
|-- |-- __main__.py
`-- `-- some_file.txt
这里是__main__.py
:
with open('some_file.txt', 'r') as f:
print(f.read())
当当前工作目录是 bar/ 并且我运行时
$ python __main__.py
结果是将 some_file.txt 中的任何内容打印到控制台。
当我将当前工作目录更改为 foo/ 并运行时
$ python bar/
我明白了:
Traceback (most recent call last):
File "/data/data/com.termux/files/home/foo/bar/__main__.py", line 1, in <module>
with open('some_file.txt', 'r') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'some_file.txt'
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:您可以使用__file__
获取脚本的路径。因此,您可以将代码编写为:
from pathlib import Path
here = Path(__file__)
with (here/"some_file.txt").open() as f:
print(f.read())
我使用 pathlib 来避免路径连接的跨平台问题:否则使用 os.path.join
。
【讨论】:
以上是关于如何从模块外部读取与 __main__.py 相同模块中包含的文件?的主要内容,如果未能解决你的问题,请参考以下文章