如何让跨目录调用的Python脚本正常使用相对路径读取文件?
问题描述

在kek_test_core.py中,我编写了一个使用相对路径导入all_dev_list.csv的函数。我在父目录的kek_test.py中导入了该脚本。如何在不将相对路径改为绝对路径、不修改chdir的前提下,让kek_test.py找到all_dev_list.csv?
我已尝试将special_models添加到sys.path中,但未生效。或许我可以将当前目录设置为目录列表之类的?
解决方案
利用
__file__属性定位脚本目录,构建可靠的文件路径
在kek_test_core.py里,把读取CSV的代码改成如下形式:import os # 获取kek_test_core.py所在的绝对目录 core_script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接得到CSV文件的绝对路径 csv_file_path = os.path.join(core_script_dir, "all_dev_list.csv") # 后续用这个路径读取文件 with open(csv_file_path, 'r', encoding='utf-8') as f: # 你的文件读取逻辑 pass这种方式会以
kek_test_core.py自身的位置为基准定位CSV文件,不管从哪个目录调用该脚本,都能正确找到目标文件,完全不需要修改工作目录或硬编码绝对路径。补充说明
你之前尝试把special_models加入sys.path没用,是因为sys.path的作用是让Python找到可导入的模块/包,而非定位数据文件,所以这个操作解决不了CSV的路径问题。
内容的提问来源于stack exchange,提问作者PaKolo
相关产品推荐
相关产品推荐

