函数相对路径的问题
我在写代码时,关于文件路径一直有个疑问。比如我在main.py中写主函数main()调用了./src/loaddata.py中的loaddata(data_path)函数,而data_path的路径又是./data/graph.txt,那么这个graph.txt的路径应该是相对于主函数main()的路径呢还是相对于loaddata()的路径呢?答案是后者。比如一个项目路径如下:
my_project/
│
├── data/
│ └── graph.txt
│
├── src/
│ ├── __init__.py
│ └── loaddata.py
│
└── main.py
我们先写一个简单的main()函数来调用loaddata()函数。
from src.loaddata import loaddata
if __name__ == '__main__':
data_name = 'cora_re.txt'
loaddata(data_name)
def loaddata(data_name):
data_path = os.path.split(os.path.abspath(__file__))[0] + '/../../data/{}'.format(data_name)
with open(data_path, 'r') as f:
first_line = f.readline.strip() #读入第一行
print(first_line)
如代码所见,在loaddata()中读入的文件路径需要相对于loaddata.py而言。

浙公网安备 33010602011771号