python写csv文件

在尝试使用Python写CSV文件时遇到错误:'module' object has no attribute 'writer'。这个问题是由于创建了一个名为'csv.py'的文件,导致Python在导入csv模块时发生混乱。解决方案是避免将文件命名为与内置模块相同的名字,以防止此类冲突。
摘要由CSDN通过智能技术生成
Python操作excel文件很方便,但是当写入数据列数大于256列时就不支持了!所以必须写CSV替代。在此记录一下CSV文件的写入代码,注意utf-8编码哦!
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
import xlrd
import xlwt
import csv

file = open('my.csv', 'wb')
file.write('\xEF\xBB\xBF');
csv_writer = csv.writer(file)

actor_book = xlrd.open_workbook("actors.xls")
actor_sheet = actor_book.sheets()[0]

actor_dic = {}
for row_index in range(0, actor_sheet.nrows):
    actor = actor_sheet.cell(row_index, 0).value
    if actor not in actor_dic.keys():
        actor_dic[actor] = {}

actor_statistics_count_book = xlrd.open_workbook("count_statistics.xlsx")
actor_statistics_count_sheet = actor_statistics_count_book.sheets()[0]
column_write = False
for actor_a in actor_dic.keys():
    csv_row_list = []
    actor_b_dic = {}
    csv_row_list.append(actor_a)
    matrix_column = 1
    csv_row_title_list = []
    csv_row_title_list.append("actors")
    for actor_b in actor_dic.keys():
        if (not column_write):
            csv_row_title_list.append(actor_b)

        matrix_count = 0
        for row_index in range(1, actor_statistics_count_sheet.nrows):
            actor1 = actor_statistics_count_sheet.cell(row_index, 0).value
            actor2 = actor_statistics_count_sheet.cell(row_index, 1).value
            if actor1 != actor_a and actor2 != actor_a:
                continue

            if actor1 != actor_b and actor2 != actor_b:
                continue

            if actor_a == actor_b and actor1 != actor2:
                continue

            matrix_count += int(actor_statistics_count_sheet.cell(row_index, 2).value)

        csv_row_list.append(matrix_count)
    if not column_write:
        csv_writer.writerow(csv_row_title_list)
    column_write = True
    csv_writer.writerow(csv_row_list)


接上篇,在执行这个文件的时候突然遇到一个莫名其妙的问题:“‘module’ object has no attribute 'writer'”,然后百度发现有哥们也遇到了同样的问题,是由于将另外的python文件命名为“csv.py”导致的!因为csv.py编译后会产生名为csv的module,而系统会默认在当前路径下去引入module,从而导致引入的此module非彼module!以后一定要注意不能瞎起名啊。。。。

CSV模块文档参考:http://docs.python.org/library/csv.html


“Cannot import name”是Python程序中常见的错误之一。它通常表示导入的模块中缺少需要的对象或类,例如函数或变量等等。这可能会导致程序无法正常运行。 在Python中,通常有两种方式导入模块: 1.导入整个模块 例如,要导入名为module_name的模块,可以使用以下代码: ``` import module_name ``` 然后可以通过module_name访问其中的函数和变量。 2.导入特定的函数或变量 如果只需要使用模块中的一部分功能,可以使用以下代码: ``` from module_name import function_name ``` 那么只会将function_name导入到程序中,然后可以直接使用function_name。 通常情况下,“Cannot import name”错误是由于在第二种方式中导入时出现的。可能的原因包括: 1.函数或变量名称拼错误 例如,如果使用以下代码导入模块,并导入了名为fun_name的函数: ``` from module_name import fun_name ``` 当fun_name的名称拼错误时,就会出现“Cannot import name”错误。 2.函数或变量在模块中不存在 应该确保正确地标识导入的函数或变量。如果在模块中没有定义导入的函数或变量,那么程序就会报告“Cannot import name”错误。 3.名称冲突 如果导入模块和Python内置的模块中有同名函数或变量,程序也会出现“Cannot import name”错误。 要解决这个问题,首先应该检查导入的模块是否存在该函数或变量,并确保正确拼。如果这并不是问题所在,那么可以尝试更改导入方式,或者更改导入的名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值