Python创建CSV文件遇AttributeError:module 'csv'无writer属性的解决方法
解决
AttributeError: module 'csv' has no attribute 'writer'错误 核心原因
你的脚本文件名大概率是csv.py,和Python标准库的csv模块重名,导致导入的是你自己的脚本文件而非系统标准库,因此找不到writer方法。
解决方案
- 重命名脚本文件:把你的脚本文件名从
csv.py改成其他名称,比如menu_csv_generator.py - 清理缓存文件:删除当前目录下的
csv.pyc文件或__pycache__文件夹(如果存在),避免缓存干扰模块导入 - 修正代码中的其他错误:
- 缩进错误:
writer.writerow('n')这行缩进不规范,需和前面的writer = csv.writer(csv_file)保持一致 - 无效数据:
writer.writerow('n')和writer.writerows('s')传入的参数不符合要求,writerow需要接收一行数据的列表/元组,writerows需要接收多行数据的可迭代对象 - 文件对象已关闭:
print(csv_file)在with块外执行会报错,因为文件已经被自动关闭,若要验证内容需重新打开文件
- 缩进错误:
修正后的完整代码
import csv # 注意:脚本文件名不能是csv.py with open('menu.csv', mode='w', newline='', encoding='utf-8') as csv_file: fieldnames = ['item', 'price', 'category', 'rating', 'total', 'popular dish'] writer = csv.writer(csv_file) # 写入表头 writer.writerow(fieldnames) # 写入示例数据 menu_items = [ ['汉堡', 15, '快餐', 4.5, 100, '是'], ['冰可乐', 6, '饮品', 4.3, 220, '是'], ['炸鸡块', 12, '快餐', 4.4, 180, '否'] ] writer.writerows(menu_items) # 读取并打印文件内容验证结果 with open('menu.csv', encoding='utf-8') as f: print(f.read())
内容的提问来源于stack exchange,提问作者Raghad Yaseen
相关产品推荐
相关产品推荐

