Python代码生成Excel失败及TXT读取问题求助
我用Python写了一段代码,批量读取名称包含特定编号的TXT文件,提取第12行及之后的数据,给不同编号的文件添加对应标识列,合并后保存为名为join.xlsx的Excel文件。程序运行后返回Process finished with exit code 0,但未生成目标文件;同时测试单个TXT读取的简单代码也无法运行,怀疑是本地文件路径的问题。
批量处理代码
import pandas as pd import os import re ruta_carpeta = r"C:\Users\José\Documents\prueba1_validador" archivos_txt = [archivo for archivo in os.listdir(ruta_carpeta) if archivo.endswith(".txt")] df = pd.DataFrame() for archivo in archivos_txt: ruta_archivo = os.path.join(ruta_carpeta, archivo) with open(ruta_archivo, "r") as f: contenido_archivo = f.readlines()[11:] df_archivo = pd.DataFrame([linea.strip().split() for linea in contenido_archivo]) if re.search(r"24645", archivo): df_archivo["Columna"] = "1" elif re.search(r"33033", archivo): df_archivo["Columna"] = "2" elif re.search(r"57375", archivo): df_archivo["Columna"] = "3" elif re.search(r"38831", archivo): df_archivo["Columna"] = "4" elif re.search(r"79441", archivo): df_archivo["Columna"] = "5" elif re.search(r"50025", archivo): df_archivo["Columna"] = "6" else: df_archivo["Columna"] = "" df = pd.concat([df, df_archivo], ignore_index=True) ruta_archivo_excel = os.path.join(ruta_carpeta, "join.xlsx") with pd.ExcelWriter(ruta_archivo_excel) as writer: df.to_excel(writer, index=False) print("Excel file was generated:", ruta_archivo_excel)
单个TXT读取测试代码
ruta_archivo = r"C:\Users\José\Documents\prueba1_validador\TXT\33033_TRA2.txt" with open(ruta_archivo, 'r') as f: contenido = f.read() print(contenido)
路径一致性检查
批量代码的根路径是C:\Users\José\Documents\prueba1_validador,但测试代码多了一层TXT子文件夹。确认TXT文件的实际位置:如果文件在TXT子文件夹下,把批量代码的ruta_carpeta改成r"C:\Users\José\Documents\prueba1_validador\TXT",否则os.listdir会找不到任何TXT文件,最终生成的Excel为空甚至无法生成。特殊字符与权限问题
路径包含西班牙语特殊字符José,部分Windows环境或Python版本对特殊字符路径支持不佳,可尝试将文件夹重命名为Jose并修改代码路径;同时确认当前用户对目标文件夹有读写权限(右键文件夹→属性→安全)。空DataFrame验证
在批量代码中添加print("找到的TXT文件数量:", len(archivos_txt)),确认是否成功定位到文件。如果输出为0,说明路径错误或文件夹内无TXT文件,此时空DataFrame可能导致Excel保存失败。Excel依赖库安装
Pandas保存Excel需要openpyxl或xlwt依赖,执行pip install openpyxl安装后重新运行代码,避免因依赖缺失静默失败。测试代码异常捕获
修改测试代码捕获具体错误,快速定位问题:import traceback ruta_archivo = r"C:\Users\José\Documents\prueba1_validador\TXT\33033_TRA2.txt" try: with open(ruta_archivo, 'r', encoding='latin-1') as f: contenido = f.read() print(contenido) except Exception as e: print("读取失败:", str(e)) traceback.print_exc()若为编码问题,可尝试指定
encoding='utf-8'或西班牙语常用的encoding='latin-1'。
内容的提问来源于stack exchange,提问作者José Durand

