创建python包时如何从subdir读取文件

时间:2018-09-30 23:26:01

标签: python

我正在尝试打包我的代码,并且我有一个类似

的结构
proj
|---- __init__.py
|---- main.py
|---- data
       |---- file_to_read.csv

我正在尝试在./data/file_to_read.csv中使用路径main.py。但是,由于出现诸如FileNotFoundError: [Errno 2] No such file or directory:之类的错误,因此无法正常工作。那我该怎么办?

2 个答案:

答案 0 :(得分:1)

main.py中,main.py本身的路径可用作__file__变量。您可以使用它来构造其他文件的路径,这些文件您知道相对于main.py的位置。对于您来说,到file_to_read.csv的路径可以计算为:

os.path.join(os.path.dirname(__file__), 'data', 'file_to_read.csv')

答案 1 :(得分:0)

请尝试漂亮的pathlib库。

├── __init__.py
├── data
│   └── file_to_read.csv
└── main.py

data / file_to_read.csv

a,b
c,d

main.py

import pathlib

file_path = pathlib.Path(__file__).parents[0].absolute()
data_path = file_path / 'data/file_to_read.csv'

with open(str(data_path)) as data_file:
    data = data_file.read().rstrip()

print(data)

运行

$ python main.py
a,b
c,d