使用Python 3.6.2编写注册程序时遇write()参数类型错误求助
解决
write() argument must be str, not list错误 嘿,这个问题很常见,我来帮你搞定!
错误原因
你遇到的问题核心在于:Python文件对象的write()方法只接受字符串类型的参数,但你直接把一个列表linetowrite传进去了,所以抛出了类型不匹配的错误。
解决方案
方法1:手动将列表转为CSV格式字符串
既然你要写CSV文件,最简单的方式是把列表元素用逗号连接成字符串,再加上换行符(确保每一条记录占一行):
database = open('database.csv', 'a') linetowrite = ['username', 'password', 'forename', 'surname', 'dob', 'artist', 'genre'] # 将列表元素用逗号拼接,添加换行符保证格式正确 line_str = ','.join(linetowrite) + '\n' database.write(line_str) database.close()
方法2:用Python内置csv模块(推荐)
手动拼接字符串有个隐患:如果你的字段里包含逗号、引号这类特殊字符,会破坏CSV格式。用官方的csv模块能自动处理这些边界情况,而且写法更规范:
import csv # 使用with语句自动管理文件,无需手动close with open('database.csv', 'a', newline='') as database: writer = csv.writer(database) linetowrite = ['username', 'password', 'forename', 'surname', 'dob', 'artist', 'genre'] writer.writerow(linetowrite)
csv.writer的writerow()方法直接接受列表作为参数,会帮你自动转换成符合CSV规范的字符串写入文件。
内容的提问来源于stack exchange,提问作者VortexHD
相关产品推荐
相关产品推荐

