Python中Txt转Excel数据覆盖及脚本运行异常问题求助
嘿,看起来你在文本转Excel的脚本里遇到了三个挺闹心的问题,我来帮你逐一拆解可能的原因和解决思路:
这个问题大概率是因为你每次写入时没有追加到现有内容末尾,而是直接重新创建了Excel文件。常见的错误场景和修复方式:
如果用
pandas的to_excel:
原来的写法(直接覆盖):df.to_excel("output.xlsx")改成追加模式,指定从现有sheet的最后一行开始写:
import pandas as pd # 加载现有Excel,获取最后一行行号 book = pd.ExcelFile("output.xlsx") last_row = book.parse("Sheet1").shape[0] # 以追加模式写入 with pd.ExcelWriter("output.xlsx", mode="a", if_sheet_exists="overlay") as writer: df.to_excel(writer, startrow=last_row, index=False, header=False)如果用
openpyxl:
别直接新建工作簿,要加载已有的文件:from openpyxl import load_workbook # 加载现有Excel wb = load_workbook("output.xlsx") ws = wb.active # 写入到最后一行之后(比如A列的下一个空行) next_row = ws.max_row + 1 ws[f"A{next_row}"] = "新数据内容" wb.save("output.xlsx") wb.close() # 手动关闭,或者用with语句自动管理
这个情况通常是程序在处理第134行时卡住或抛出了未被捕获的异常,导致循环中断但没报错。你可以这么排查:
打印调试信息:在循环里加入行号和当前行内容的打印,看看第134行是什么情况:
with open("input.txt", "r", encoding="utf-8") as f: for count, line in enumerate(f, 1): print(f"正在处理第 {count} 行:{line.strip()}") # 你的解析、写入代码运行后看输出,是不是第134行有特殊字符、空行或者格式和其他行不一致?
检查异常捕获逻辑:如果你的代码里有
try-except块,别用except:这种吞掉所有异常的写法,要捕获具体异常并打印错误信息:try: # 你的解析代码(比如分割字符串、转换数据类型) except Exception as e: print(f"第 {count} 行出错:{str(e)}") # 可选:要不要继续处理下一行?可以加continue continue很多时候程序停住就是因为某行抛出了异常,但你没看到错误提示。
验证文件实际行数:打开你的文本文件,看看实际行数是不是只有134行?或者后面的行是空行被你的代码跳过了?
这个问题很可能和问题2有关——如果程序卡在第134行,根本没执行到关闭文件的代码,自然会出现文件没关闭、脚本一直跑的情况。除此之外还有这些可能:
没有用上下文管理器(with语句)管理资源:手动调用
close()很容易因为程序中断而没执行到,改用with语句会自动帮你关闭文件/Excel句柄:# 处理文本文件 with open("input.txt", "r") as input_f: # 读取内容的逻辑 # 处理Excel文件(以openpyxl为例) with load_workbook("output.xlsx") as wb: ws = wb.active # 写入逻辑 wb.save("output.xlsx")Excel文件被其他进程占用:如果你在运行脚本时,Excel文件是打开状态的,脚本可能会因为无法写入/关闭文件而卡住。试试关闭Excel后再运行脚本。
循环里有无限等待逻辑:检查你的解析代码里有没有
time.sleep()或者等待输入的逻辑,不小心写成无限等待了?
内容的提问来源于stack exchange,提问作者aps_s




