Python/Pandas读取选中TXT文件为DataFrame时遇文件未找到错误求助
解决TXT文件读取为DataFrame的路径错误问题
问题根源
你遇到的FileNotFoundError是因为filelist里只存了文件名,没有文件的完整路径。当用pd.read_csv()读取时,Python默认在当前脚本的工作目录查找文件,而非你输入的目标目录,自然找不到对应文件。另外你的代码没有筛选TXT文件,会列出目录下所有类型的文件,不符合需求。
修正后的代码
import os import pandas as pd # 用户输入目标目录 input_dir = input(r'Enter location of INPUT folder: ') # 生成带完整路径的TXT文件列表 filelist = [os.path.join(input_dir, f) for f in os.listdir(input_dir) if os.path.isfile(os.path.join(input_dir, f)) and f.lower().endswith('.txt')] # 检查是否有TXT文件 if not filelist: print("目录下没有找到TXT文件") else: # 列出文件供选择(只显示文件名) for cnt, full_path in enumerate(filelist): filename = os.path.basename(full_path) print(cnt, filename) # 处理用户选择,确保输入有效 while True: choice = input("select file number: ") try: choice_idx = int(choice) if 0 <= choice_idx < len(filelist): break else: print(f"请输入0到{len(filelist)-1}之间的数字") except ValueError: print("请输入有效的数字") # 读取选中的TXT文件为DataFrame df = pd.read_csv(filelist[choice_idx]) # 可选:打印DataFrame的前几行验证 print("\n读取的DataFrame预览:") print(df.head())
关键修改点
- 完整路径存储:用
os.path.join(input_dir, f)把目录和文件名拼接成完整路径,存入filelist,确保读取时能定位到正确文件。 - 筛选TXT文件:添加
f.lower().endswith('.txt')判断,只保留TXT文件(忽略大小写,兼容.TXT后缀)。 - 输入验证:增加循环判断,确保用户输入的是有效范围内的整数,避免索引越界或类型错误。
- 友好显示:用
os.path.basename(full_path)只显示文件名,不影响用户选择体验。
内容的提问来源于stack exchange,提问作者PandaNoob
相关产品推荐
相关产品推荐

