Python如何无需硬编码路径读取项目文件夹内所有CSV文件
解决方案
核心思路是动态获取当前脚本的所在路径,自动拼接csv文件夹的相对路径,完全不需要硬编码固定路径,项目任意移动都能正常运行。
方法1:使用os模块(兼容性最好)
适配所有Python版本,自动兼容不同操作系统的路径分隔符:
import os import glob import pandas as pd # 获取当前脚本所在的绝对路径,即ProjectFolder的根路径(假设脚本放在ProjectFolder根目录下) base_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接csvFolder路径 path = os.path.join(base_dir, 'csvFolder') all_files = glob.glob(os.path.join(path, "*.csv")) df_mm = pd.concat((pd.read_csv(f, usecols=["[mm]"]) for f in all_files), axis = 1, ignore_index = True)
如果你的脚本存放在ProjectFolder的子目录中,比如ProjectFolder/src/run.py,只需要多嵌套一层os.path.dirname()即可向上跳转一级目录,调整到匹配你文件结构的层级即可。
方法2:使用pathlib(Python3.4+推荐,写法更简洁)
面向对象的路径处理方式,语法更直观:
from pathlib import Path import glob import pandas as pd # 直接获取当前脚本所在目录,拼接csvFolder路径 base_dir = Path(__file__).absolute().parent path = base_dir / 'csvFolder' # 两种读取文件方式二选一即可 all_files = glob.glob(str(path / "*.csv")) # 纯pathlib写法:all_files = list(path.glob("*.csv")) df_mm = pd.concat((pd.read_csv(f, usecols=["[mm]"]) for f in all_files), axis = 1, ignore_index = True)
两种方案都支持跨Windows、macOS、Linux系统运行,不需要手动修改路径分隔符,项目任意移动位置都不需要调整代码。
内容的提问来源于stack exchange,提问作者Jesh Kundem
相关产品推荐
相关产品推荐

