函数相对路径的问题

我在写代码时,关于文件路径一直有个疑问。比如我在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而言。

posted @ 2023-11-25 16:49  X1OO  阅读(21)  评论(0)    收藏  举报