蟒蛇;读取文件路径错误

时间:2018-08-27 09:33:40

标签: python path absolute-path os.path pathlib

我有一个目录结构;

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 模块,该模块无法解决问题。

1 个答案:

答案 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.....