我有一个目录结构;
DIR1:
----outerPyFile.py
----DIR2:
--------innerPyFile.py
--------DIR3:
------------fileToRead.csv
我正在读取 innerPyFile 中的fileToRead.csv:pd.read_csv('DIR3/fileToRead.csv')
如果我单独运行innerPyFile.py,效果很好
现在,当将externalPyFile.py内的innerPyFile模块导入为
时
import innerPyFile
-FileNotFoundError:DIR3\\fileToRead.csv.
不存在
我尝试将innerPyFile中的绝对路径替换为pd.read_csv(os.path.abspath('DIR3/fileToRead.csv'))
仍然,当我运行externalPyFile时,
FileNotFoundError C:\\\DIR1\\\DIR3\\\fileToRead.csv
不存在,
此处代码省略了DIR2,所以我将代码更改为 pd.read_csv(os.path.abspath('DIR2/DIR3/fileToRead.csv'))
现在,当我运行outerPyFile.py时,代码结构可以正常工作。 但是在这里,当我单独运行innerPyFile时会出现问题,因为它将搜索innerPyFile的CWD中不存在的DIR2。
任何人都可以怀疑这种行为,
请回复我发生了什么事?
仅供参考,我还尝试了 pathLib 模块,该模块无法解决问题。
答案 0 :(得分:1)
尝试一下:
innerPyFile.py
import os
script_path = os.path.abspath(__file__) # i.e. /path/to/dir/foobar.py
script_dir = os.path.split(script_path)[0] #i.e. /path/to/dir/
rel_path = "DIR3/fileToRead.csv"
abs_file_path = os.path.join(script_dir, rel_path)
pd.read_csv(abs_file_path)
outerPyFile.py
import DIR2.innerPyFile
#......do something.....