【发布时间】:2020-04-14 18:29:58
【问题描述】:
假设我有一个像这样的文件结构:
test
mammals
Wolf.py
wolfname.txt
Zoo.py
在Wolf.py 里面我有:
class Wolf:
def __init__(self):
with open('wolfname.txt', 'r') as fileobj:
self.name = fileobj.read()
print(self.name)
wolf = Wolf()
如果我从Wolf.py 内部调用它,它可以正常工作。如果我从Zoo.py 内部调用它,它会给出FFileNotFoundError: [Errno 2] No such file or directory: 'wolfname.txt'
错误。
在不解析绝对路径的情况下修复它的方法是什么?将来我可能还想使用其他新包中的Wolf 类。
我在 Zoo 中使用这个导入:
from mammals.Wolf import Wolf
wolf = Wolf()
编辑:我制作了这个 repl.it 以在线显示:https://repl.it/repls/DrearyGrizzledMicroscope
【问题讨论】:
-
你尝试了什么相对路径?如果哺乳动物与 Zoo.py 位于同一文件夹中,则 Zoo.py 的路径应为哺乳动物/wolfname.txt
-
@PierreV。
import os os.path.dirname(os.path.abspath(__file__))会给我动物园的位置,不是吗?C://.../ProjectRoot/(将来我也想在 Linux 上运行这个程序)。但是,我必须硬编码if s.endsWith("ProjectRoot"): go to mammals?然后,如果我想在其他 10 个模块中使用Wolf,每个模块都位于不同的文件夹中......那么呢?
标签: python python-3.x