CSV文件追加时出现空行问题(禁止使用Pandas)
问题解决:CSV文件生成时出现多余空行
问题原因
你的代码里用csv.writer写入文件时,未指定newline=''参数,导致Windows系统下文件默认换行处理与csv模块的换行逻辑叠加,产生额外空行。此外代码还存在导入错误:仅导入了csv.writer,却直接调用csv.reader,会触发NameError,需补上reader的导入。
修正方案
- 导入
csv模块的writer和reader,或直接导入整个csv模块 - 打开写入目标文件时添加
newline=''参数,让csv模块自行处理换行逻辑 - 优化异常处理,避免捕获无关异常;添加返回逻辑,防止文件不存在时后续代码报错
修正后的完整代码
from csv import writer, reader def ImportFunction(): which_file = input("Which file would you like to import?") # 验证用户指定文件是否存在 try: with open(which_file, 'r') as file: user_file = file.read() print(user_file) except FileNotFoundError: print("Sorry the user file can't be found. Please try again.") return # 文件不存在时直接返回,避免后续执行出错 # 处理transaction_ledger.csv try: with open('transaction_ledger.csv', 'r') as file: file_content_transaction_ledger = file.read() print(file_content_transaction_ledger) except FileNotFoundError: # 文件不存在时创建并写入内容 with open(which_file, 'r') as old_file: reader_obj = reader(old_file) # 关键:添加newline=''参数解决空行问题 with open('transaction_ledger.csv', 'w', newline='') as new_file: writer_obj = writer(new_file, delimiter=",") for data in reader_obj: writer_obj.writerow(data) print("New file created and filled in with old file data") ImportFunction() with open('transaction_ledger.csv', 'r') as file: file_content_transaction_ledger = file.read() print(file_content_transaction_ledger)
说明
newline=''参数让csv.writer根据系统自动适配换行符,避免双重换行产生空行- 将裸
except改为FileNotFoundError,精准捕获文件不存在的异常,便于调试 - 补充
reader导入,解决原代码潜在的NameError问题
内容的提问来源于stack exchange,提问作者Jorge Daniel Atuesta
相关产品推荐
相关产品推荐

