Python3 csv编写器失败,退出错误"TypeError:'newline'是此函数的无效关键字参数

kht*_*tad 2 csv python-3.x

我正在做的事情:

我正在尝试将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行,是我的编写器对象实例化的地方.我通过调试器运行它,一旦我尝试创建编写器对象,它就会崩溃.如果我不添加换行参数,则会要求提供方言规范,因此也不起作用.

我确信有一些令我眼花缭乱的东西让我失踪,但我看不到它.

Ign*_*ams 6

措辞有点含糊不清.该文件应该打开newline='',但newline不是csv.writer()自己的有效选项.


小智 5

为避免此错误,请以“ wb”模式而不是“ w”模式打开文件。这将消除换行的需要。更正后的代码如下:

with open(csvpath, 'wb') as g:
        gWriter = csv.writer(g)
        gWriter.writerows(rows)
Run Code Online (Sandbox Code Playgroud)