Python新手求助:读取CSV转存TXT代码报错
解决CSV转TXT的代码报错问题
嘿,我来帮你排查下代码里的问题~你的代码里有几个明显的错误导致了报错,我来逐一说明并给出修正方案:
代码里的问题点
- 重复打开文件且参数错误:你先手动用
open()创建了csv_file和txt_file对象,然后又把这些对象传给with open(),但with open()需要的是文件名(字符串),不是已经打开的文件对象,这会直接引发错误。 - 缺少csv模块导入:代码里用到了
csv.reader(),但没有提前导入csv模块,这会导致NameError。 - 多余的手动关闭文件:
with语句会自动帮你关闭文件,不需要再调用my_output_file.close()。 - 不必要的列表推导式:用列表推导式来写文件操作不太合适,普通的for循环可读性更强,也更符合Python的最佳实践。
修正后的代码
import csv # 记得导入csv模块 # 用with语句同时处理两个文件,自动管理文件打开/关闭 with open('example.csv', 'r', encoding='utf-8') as my_input_file, \ open('example.txt', 'w', encoding='utf-8') as my_output_file: # 遍历csv文件的每一行 for row in csv.reader(my_input_file): # 把csv的列用空格分隔后写入txt,加上换行符 my_output_file.write(' '.join(row) + '\n')
代码说明
- 导入csv模块:这是使用
csv.reader()的前提,必须加上。 - 同时使用两个with语句:用逗号分隔可以在一个with块里处理多个文件,代码更简洁,且会自动关闭所有文件。
- 指定编码:加上
encoding='utf-8'可以避免不同系统下的编码问题,确保文件读写正常。 - 普通for循环:替代列表推导式,让代码逻辑更清晰,容易调试。
内容的提问来源于stack exchange,提问作者bybu
相关产品推荐
相关产品推荐

