【问题标题】:Python3 csv writer failing, exiting on error "TypeError: 'newline' is an invalid keyword argument for this functionPython3 csv writer失败,退出错误“TypeError:'newline'是此函数的无效关键字参数
【发布时间】:2015-09-27 19:31:10
【问题描述】:

我想做的事:

我正在尝试将 csv 文件的格式从空格分隔更改为逗号分隔。

我做了什么:

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

with open(txtpath, mode='r', newline='') as f:
    fReader = csv.reader(f)
        for rows in fReader:
            print(rows)

这完全符合预期,抽查输出确认行被正确读取。

问题:

根据官方Python3 Documentation on csv.writer,“如果csvfile是文件对象,应该用newline=''1打开。”我的代码如下所示:

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 对象,它就会崩溃。如果我不添加它要求方言规范的换行参数,那么这也不起作用。

我确定我错过了一些非常明显的东西,但我看不到它。

【问题讨论】:

    标签: csv python-3.x


    【解决方案1】:

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

    with open(csvpath, 'wb') as g:
        gWriter = csv.writer(g)
        gWriter.writerows(rows)
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 确实很明显。解决了它,我会在 9 分钟内接受它。现在我有一个我不明白的新问题,但我可以稍后再写。
      【解决方案3】:

      newlinewith open('output.csv', 'a',newline='') as fp 中不起作用。它会返回一个错误:

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

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

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

      【讨论】:

        【解决方案4】:

        下面会做

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

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

        【讨论】:

          猜你喜欢
          • 2019-05-17
          • 1970-01-01
          • 2012-07-07
          • 1970-01-01
          • 1970-01-01
          • 2013-07-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多