我正在做的事情:
我正在尝试将csv文件的格式从空格分隔为逗号分隔.
我做了什么:
我可以很好地摄取csv文件,并逐行将输出打印到控制台.该代码如下所示:
with open(txtpath, mode='r', newline='') as f:
fReader = csv.reader(f)
for rows in fReader:
print(rows)
Run Code Online (Sandbox Code Playgroud)
这完全符合预期,并且检查输出确认行正确读取.
问题:
根据csv.writer上官方的Python3文档,"如果csvfile是一个文件对象,它应该用newline ='' 1打开." 我的代码看起来像这样:
with open(csvpath, 'w') as g:
gWriter = csv.writer(g, newline='')
gWriter.writerows(rows)
Run Code Online (Sandbox Code Playgroud)
总而言之,它看起来像这样:
with open(txtpath, mode='r', newline='') as f:
fReader = csv.reader(f)
for rows in fReader:
print(rows)
with open(csvpath, 'w') as g:
gWriter = csv.writer(g, newline='')
gWriter.writerows(rows)
Run Code Online (Sandbox Code Playgroud)
但是,当我使用Pycharm(选择Anacondas 3.4作为项目解释器)和使用python3 mycode.py从控制台运行代码时,两个结果都告诉我换行"是此函数的无效关键字参数"并引用第42行,是我的编写器对象实例化的地方.我通过调试器运行它,一旦我尝试创建编写器对象,它就会崩溃.如果我不添加换行参数,则会要求提供方言规范,因此也不起作用.
我确信有一些令我眼花缭乱的东西让我失踪,但我看不到它.
小智 5
为避免此错误,请以“ wb”模式而不是“ w”模式打开文件。这将消除换行的需要。更正后的代码如下:
with open(csvpath, 'wb') as g:
gWriter = csv.writer(g)
gWriter.writerows(rows)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13495 次 |
最近记录: |