批量转换驾照信息文本为CSV文件报错求助
问题场景与错误
我有数千份包含驾照信息的文本文件(示例内容如下),希望为每个文本文件生成对应的CSV文件,将文本中的每一行存入单独列:
[J RYBEWYS
1 Mesters:
Lambertus #
» 05.01.1979 Eindhoven 40.31.01.2017 4» 31.01.2027 4< Gemeente Waaire
5740344641
AM-BE , a T
D1NLD1574034464194NB44MK362D54]
使用以下代码后出现FileNotFoundError:
# list the files filelist = os.listdir(targetdir) # read them into pandas df_list = [pd.read_csv(file, header = None, encoding='latin1') for file in filelist] df_list.to_csv('D:/Athora/CSV/text.csv', index = None, encoding='latin1')
错误回溯关键信息:
FileNotFoundError: [Errno 2] No such file or directory: 'DLcasper.jpg.txt'
代码错误分析
- 文件路径不完整:
os.listdir(targetdir)仅返回文件名,不是完整路径。当当前工作目录不是targetdir时,pd.read_csv无法定位到文件,导致报错。 - 列表无
to_csv方法:df_list是DataFrame组成的列表,并非单个DataFrame,直接调用to_csv会触发AttributeError。 - 逻辑不符合需求:原代码试图将所有文件合并为一个CSV,但需求是每个文本文件生成对应的单独CSV。
- 读取方式错误:
pd.read_csv默认按逗号分隔解析,而我们需要把文本的每一行作为CSV的一列,读取逻辑需调整。
可行解决方案
以下代码实现每个文本文件生成对应CSV,将文本每行转为CSV的一列:
import os import pandas as pd # 目标文本文件目录,请替换为你的实际路径 targetdir = "你的文本文件目录路径" # 输出CSV的目录,可自行修改,若不存在会自动创建 output_dir = "D:/Athora/CSV" os.makedirs(output_dir, exist_ok=True) # 遍历目标目录下的所有文件 for filename in os.listdir(targetdir): # 仅处理文本文件,可根据实际后缀调整(如".txt") if filename.endswith(".txt"): # 拼接完整文件路径,避免找不到文件 file_path = os.path.join(targetdir, filename) # 读取文本所有行,过滤空行并清理首尾空白 with open(file_path, 'r', encoding='latin1') as f: lines = [line.strip() for line in f if line.strip()] # 将所有行转为DataFrame的一行(即每行对应CSV的一列) df = pd.DataFrame([lines]) # 生成输出CSV文件名(替换原后缀为.csv) csv_filename = os.path.splitext(filename)[0] + ".csv" csv_path = os.path.join(output_dir, csv_filename) # 保存CSV,不保留索引和表头 df.to_csv(csv_path, index=False, encoding='latin1', header=False)
代码说明
- 用
os.path.join拼接完整路径,彻底解决文件找不到的问题。 - 读取文本时自动过滤空行、清理冗余空白,保证数据整洁。
- 把文本的每一行转为CSV的一列,完全匹配需求。
- 自动创建输出目录,避免因目录不存在报错。
- 每个文本文件对应生成同名CSV文件,满足“一对一”转换需求。
内容的提问来源于stack exchange,提问作者Sakura01
相关产品推荐
相关产品推荐

