Python如何将txt文件的一行写入另一文件?csv库写入异常如何处理
Python csv库写入格式异常问题解决方案
核心问题原因
- 文件打开、csv写入器初始化逻辑放在行处理循环分支内,每次处理行都会以
w覆盖模式重新打开文件,清空之前的写入内容,无法实现逐行累加效果。 csv.writer的writerow()方法要求传入列表格式的单行字段集合,若直接传入字符串类型的line,方法会将字符串按单个字符迭代拆分,每个字符作为单独一列写入,最终出现格式错乱。
修复方案
场景1:line本身是符合格式要求的整行内容
不需要调用csv库,直接使用文件对象的write方法写入即可,代码示例:
# 文件操作逻辑移至循环外部,使用with上下文管理器自动管理文件资源 with open(f'{title}.txt', 'w', encoding='utf-8') as f: # 此处为你原有的行遍历逻辑 for line in 待遍历的行集合: # 你原有用于定位测试内容起止的判断逻辑 else: print(line) # 直接写入整行,若line无自带换行符可补充'\n' f.write(line + '\n')
场景2:需要将line作为单个字段写入标准csv文件
按csv库规范传入参数即可,代码示例:
import csv # 打开文件时指定newline=''为csv库官方要求,避免Windows平台生成多余空行 with open(f'{title}.csv', 'w', encoding='utf-8', newline='') as csv_file: writer = csv.writer(csv_file) # 此处为你原有的行遍历逻辑 for line in 待遍历的行集合: # 你原有用于定位测试内容起止的判断逻辑 else: print(line) # 将line包装为单元素列表后传入 writer.writerow([line])
内容的提问来源于stack exchange,提问作者Joe Wilson
相关产品推荐
相关产品推荐

