Python pandas如何从同级目录读取CSV文件?相对路径报错如何解决?
报错根本原因
你使用的相对路径../dir2/mycsv.csv是相对于执行python命令时的当前工作目录的,而非script.py文件本身的存放目录。只有你在dir1目录下执行脚本时,这个路径才能正常定位到文件,只要运行脚本的目录发生变化,就会出现找不到文件的报错。
解决方案
推荐使用第一种方案,兼容性最高:
- 方案1:基于脚本本身路径拼接目标csv的绝对路径
这种写法不受运行脚本的工作目录影响,无论在哪个目录执行都能正确定位到文件。
使用os模块的写法:
Python 3.4及以上版本可以用更简洁的import os import pandas as pd # 获取当前script.py文件所在的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接得到mycsv.csv的绝对路径 csv_path = os.path.join(script_dir, "..", "dir2", "mycsv.csv") df = pd.read_csv(csv_path)pathlib写法:from pathlib import Path import pandas as pd csv_path = Path(__file__).parent.parent / "dir2" / "mycsv.csv" df = pd.read_csv(csv_path) - 方案2:根据运行目录调整相对路径
如果你每次都会在固定目录运行脚本,可以先执行以下代码查看当前工作目录,再对应调整相对路径:
比如你在parent_dir目录下运行脚本,相对路径就需要改为import os print(os.getcwd())pd.read_csv("dir2/mycsv.csv");只有在dir1目录下运行时,你原来的写法才生效。
注意事项
生产环境尽量不要使用硬编码的相对路径,基于__file__拼接路径的方式兼容性最好,可避免因运行目录变化导致的文件找不到问题。
内容的提问来源于stack exchange,提问作者Canovice
相关产品推荐
相关产品推荐

