【发布时间】:2019-12-21 22:01:54
【问题描述】:
我正在尝试将字符串写入以“wb”模式打开的 csv 文件。 尽管我向 csv writer 提供了一个字节对象,但我得到了上述错误 我使用 pdb 来确保我是对的
(Pdb) type(row.encode("utf-8"))
<class 'bytes'>
我知道我只能在“w”模式下打开它,但它应该与 python2.7 兼容,在 python 2.7 中,如果我用“w”打开文件,它会插入多余的空行。 另外应该兼容我想了解我在这里做错了什么。
rows_list=[]
rows_list.append('plimit')
rows_list.append('#i_pstate')
csvfile=open(output_file_path, 'wb')
try:
filewriter = csv.writer(csvfile, delimiter=',',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
#import pdb;pdb.set_trace()
for row in rows_list:
filewriter.writerow([row.encode("utf-8")])
except Exception as ex:
print ("error occurred '%s'"% (ex))
return -1
finally:
csvfile.close()
完整的追溯:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\pythonsv\icelake\debug\domains\ice\platform_config_generation.py", line 81, in write_max_pstate_config_csv
filewriter.writerow([row.encode("utf-8")])
TypeError: a bytes-like object is required, not 's
【问题讨论】:
-
您能否删除
try/except并让任何异常发生而不是捕获和打印它?然后显示堆栈跟踪,以便我们可以看到错误的来源。 -
什么是
rows_list?我会假设一个字符串列表,但你能确认一下吗?发布其中的一部分会有所帮助。请参阅minimal reproducible example 了解更多指示。 -
@mkrieger1 Traceback(最近一次调用最后):文件“
”,第 1 行,在 文件“c:\pythonsv\icelake\debug\domains\ice\platform_config_generation.py ",第 81 行,在 write_max_pstate_config_csv filewriter.writerow([row.encode("utf-8")]) TypeError: a bytes-like object is required, not 'str' -
@wjandrea 你是对的 rows_list 它只是字符串列表 rows_list=[] rows_list.append('plimit') rows_list.append('#i_pstate')
标签: python-3.x csv unicode