Python3 csv编写器失败,出现错误时退出;类型错误:';新线';此函数的关键字参数无效

Python3 csv编写器失败,出现错误时退出;类型错误:';新线';此函数的关键字参数无效,csv,python-3.x,Csv,Python 3.x,我想做什么: 我正在尝试将csv文件的格式从空格分隔改为逗号分隔 我所做的: 我可以很好地接收csv文件,并将输出逐行打印到控制台。该代码如下所示: 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文件的格式从空格分隔改为逗号分隔

我所做的:

我可以很好地接收csv文件,并将输出逐行打印到控制台。该代码如下所示:

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)
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)
这正是它应该做的,并且抽查输出确认正确读取了行

问题:

根据这位官员的说法,“如果csvfile是一个文件对象,那么应该用newline=''打开它。”我的代码如下所示:

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)
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)
总之,看起来是这样的:

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)
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)
但是,当我使用Pycharm(Anacondas 3.4被选为项目解释器)和python3 mycode.py从控制台运行代码时,两个结果都告诉我换行符“是此函数的无效关键字参数”,并引用第42行,这是我的writer对象的实例化位置。我通过调试器运行了它,当我试图创建writer对象时,它就失效了。如果我不添加换行符参数,它会要求一个方言规范,所以这也不起作用


我确信我遗漏了一些显而易见的东西,但我看不到。

措辞有点模糊。文件应使用
newline='
打开,但是
newline
对于
csv.writer()
本身不是有效的选项。

要避免此错误,请在
'wb'
模式下打开文件,而不是在
'w'
模式下打开文件。这样就不需要换行了。 更正代码如下:

with open(csvpath, 'wb') as g:
    gWriter = csv.writer(g)
    gWriter.writerows(rows)
下面就可以了

with open('filename_inCSV.csv',mode='r') as csvfile:


换行符
中不起作用,打开('output.csv','a',换行符='')作为fp
。它将返回一个错误:

“newline”是此函数的无效关键字参数

我使用了
'ab'
方法,它在两行之间没有空白行:

with open('output.csv', 'ab',) as fp

事实上,这是显而易见的。这就解决了,我会在9分钟内接受。现在我有一个新问题,我不明白,但我可以稍后再写。