Чтение файла с использованием относительного пути в проекте Python
Скажем, у меня есть проект Python, который структурирован следующим образом:
project
/data
test.csv
/package
__init__.py
module.py
main.py
__init__.py
:
from .module import test
module.py
:
import csv
with open("..data/test.csv") as f:
test = [line for line in csv.reader(f)]
main.py
:
import package
print(package.test)
Когда я бегуmain.py
Я получаю следующую ошибку:
C:\Users\Patrick\Desktop\project>python main.py
Traceback (most recent call last):
File "main.py", line 1, in <module>
import package
File "C:\Users\Patrick\Desktop\project\package\__init__.py", line 1, in <module>
from .module import test
File "C:\Users\Patrick\Desktop\project\package\module.py", line 3, in <module>
with open("../data/test.csv") as f:
FileNotFoundError: [Errno 2] No such file or directory: '../data/test.csv'
Однако, если я бегуmodule.py
отpackage
каталог я получаю без ошибок. Таким образом, кажется, что относительный путь, используемый вopen(...)
зависит только от того, откуда запускается исходный файл (т.е.__name__ == "__main__"
)? Я не хочу использовать абсолютные пути. Какие есть способы справиться с этим?