求助:将目录下TXT文件导入DataFrame并保存为CSV的实现问题
解决方案:批量处理TXT文件生成CSV
直接上可运行的简洁代码,完美匹配你的需求:
import os import csv # 替换成你的TXT文件所在目录路径,建议用绝对路径避免出错 txt_dir = "./txt_files" output_csv = "output.csv" # 确保输出文件的目录存在(如果输出路径包含子目录) os.makedirs(os.path.dirname(output_csv), exist_ok=True) with open(output_csv, "w", newline="", encoding="utf-8") as csv_file: writer = csv.writer(csv_file) # 遍历目录下所有TXT文件 for filename in os.listdir(txt_dir): if filename.endswith(".txt"): # 提取不带后缀的文件名 file_base_name = os.path.splitext(filename)[0] # 构建完整文件路径,彻底解决"Errno 2"问题 file_path = os.path.join(txt_dir, filename) all_numbers = [] # 读取文件并收集所有数字 with open(file_path, "r", encoding="utf-8") as txt_file: for line in txt_file: # 分割每行内容,过滤空值,收集所有数字 numbers = [num.strip() for num in line.split() if num.strip()] all_numbers.extend(numbers) # 写入CSV一行:文件名 + 所有合并后的数字 writer.writerow([file_base_name] + all_numbers) print("处理完成,CSV文件已生成!")
关键细节说明
- 路径问题:用
os.path.join拼接目录和文件名,这是解决你"Errno 2"报错的核心——之前的错误大概率是直接用文件名而没加目录路径,导致Python在当前工作目录找不到文件。 - 文件名处理:
os.path.splitext是Python内置的可靠方法,自动去掉文件后缀,不用手动截取字符串。 - 内容合并:遍历每个TXT的每一行,不管每行有几个数字,全部收集到一个列表里,最后和文件名组成CSV的一行,完全符合"每个TXT对应CSV一行"的需求。
- CSV格式:用
csv.writer自动处理逗号分隔逻辑,避免手动拼接字符串导致的格式混乱。
常见问题排查
- Errno 2报错:
- 检查
txt_dir是否为正确路径,优先用绝对路径(比如C:/Users/你的用户名/txt_files或/home/你的用户名/txt_files)。 - 确认目录内确实有
.txt文件,且文件名没有全角空格、特殊符号这类容易导致识别失败的内容。
- 检查
- 只处理首个文件:
- 之前的代码可能在循环内写了
break,或者缩进错误(比如文件处理代码不在循环块里),上面的代码会遍历所有符合条件的TXT文件。
- 之前的代码可能在循环内写了
- 数字格式调整:
- 如果需要把数字转成整数/浮点数,把
numbers = [num.strip() ...]改成numbers = [int(num.strip()) ...]或float()即可。
- 如果需要把数字转成整数/浮点数,把
内容的提问来源于stack exchange,提问作者HoopStart
相关产品推荐
相关产品推荐

