使用os.listdir()遍历CSV文件并转换为Pandas DataFrame时遭遇FileNotFoundError的求助
问题分析与解决方案
嘿,这个问题我之前也碰到过!原因很简单——os.listdir()返回的只是目标目录里的纯文件名,不是完整的文件路径。当你直接把这个文件名传给pd.read_csv()时,Python会默认在你运行脚本的当前工作目录里找文件,而不是你指定的C:/PA_Boundaries/Tests/目录,这就导致了FileNotFoundError。
下面给你两种靠谱的解决方法:
方法一:用os.path.join()拼接完整路径
这是最经典的处理方式,能兼容不同操作系统的路径分隔符:
import pandas as pd import os dir_name = 'C:/PA_Boundaries/Tests/' dfs = [] for file in os.listdir(dir_name): # 拼接目录和文件名,生成完整路径 full_file_path = os.path.join(dir_name, file) # 额外加个判断,只处理CSV文件,避免目录或其他格式文件干扰 if full_file_path.endswith('.csv'): df = pd.read_csv(full_file_path) dfs.append(df) print(dfs)
方法二:用pathlib模块(Python 3.4+推荐)
pathlib是Python标准库中更现代化的路径处理工具,代码更简洁,还能直接过滤CSV文件:
import pandas as pd from pathlib import Path dir_name = Path('C:/PA_Boundaries/Tests/') dfs = [] # 直接匹配目录下所有CSV文件 for csv_file in dir_name.glob('*.csv'): df = pd.read_csv(csv_file) dfs.append(df) print(dfs)
额外提示
如果你的目标目录里还有子文件夹,os.listdir()会把文件夹名也列出来,这时候不加判断就会报错。所以上面两种方法里的过滤逻辑(endswith('.csv')或glob('*.csv'))能帮你避开这个坑。
内容的提问来源于stack exchange,提问作者MulfordnSons
相关产品推荐
相关产品推荐

