Mik*_*e T 42 python windows csv python-3.x
我试图在Windows计算机上使用Python 3.2来编写一个简单的CSV文件,但是我没有运气.从Python 3.2的csv模块文档:
>>> import csv
>>> spamWriter = csv.writer(open('eggs.csv', 'w'), delimiter=' ',
... quotechar='|', quoting=csv.QUOTE_MINIMAL)
>>> spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])
>>> spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
Run Code Online (Sandbox Code Playgroud)
生成一个文件,每行由字节序列终止\r\r\n
,因此当您用例如MS Excel打开它时,看起来每行都有一个额外的空行.这不是"CSV文件".
注意,如果我在Python 3.2中尝试Python 2.7的相同示例(其中'w'
与'wb'
文件模式的区别很大),我在尝试时遇到错误spamWriter.writerow
:
回溯(最近一次调用最后一次):TypeError中的文件"",第1行:'str'不支持缓冲区接口
如何在Windows计算机上从Python 3.2编写简单的CSV文件?
ale*_*n13 63
文档说你应该使用 open('eggs.csv', 'w', newline='')
http://docs.python.org/py3k/library/csv.html#id2
Dav*_*ton 19
这适用于Python 2和Python 3:
if sys.version_info >= (3,0,0):
f = open(filename, 'w', newline='')
else:
f = open(filename, 'wb')
Run Code Online (Sandbox Code Playgroud)
csv.writer(csvfile, dialect='excel', **fmtparams)
如果csvfile是文件对象,则应使用newline =''打开它.
如果未指定newline ='',则不会正确解释嵌入在引用字段中的换行符,并且在写入时使用\ r \n linendings的平台上将添加额外的\ r \n .指定newline =''应始终是安全的,因为csv模块执行自己的(通用)换行处理.
以下变体适用于Linux和Windows:
spamWriter = csv.writer(open('eggs.csv', 'wb'), delimiter=' ', quotechar='|',
quoting=csv.QUOTE_MINIMAL, newline='')
spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
Run Code Online (Sandbox Code Playgroud)
要直接回答您的问题,您应该能够使用行终止符格式参数:
...所以修改这一行应该有效(未经测试):
>>> spamWriter = csv.writer(open('eggs.csv', 'w'), delimiter=' ',
... quotechar='|', quoting=csv.QUOTE_MINIMAL, lineterminator='\n')
Run Code Online (Sandbox Code Playgroud)
至于为什么这个例子不能开箱即用,对我来说有点像一个错误。
归档时间: |
|
查看次数: |
78232 次 |
最近记录: |