【问题标题】:newline parameter not working as expected换行参数未按预期工作
【发布时间】:2020-05-10 03:43:26
【问题描述】:

我一直在尝试使用 newlines = "" 编写一个 csv 文件 (Python 3.8)。但是,每次我运行我的程序时,第一行都会被覆盖。我的代码如下:

def write_csv():
    with open("asco.csv", 'w', newline = '') as file:
        writer = csv.writer(file)
        writer.writerow([full_name, credentials])

每次我为这些变量收集新数据时都会调用它。每次创建新变量并调用它时,它都会被重写。在执行上面的操作之前,我还使用以下代码为文件创建了一个标头。

with open("asco.csv", 'w', newline = '') as file: #create file 
    writer = csv.writer(file)
    writer.writerow(["Name","Credentials"])

知道是什么导致了这个问题吗?我读过的所有内容都说 newline = '' 应该可以解决我的问题。

【问题讨论】:

    标签: python csv


    【解决方案1】:

    您需要以“追加”模式打开文件:

    with open("asco.csv", 'a', newline = '') as file: #create file 
        writer = csv.writer(file)
        writer.writerow(["Name","Credentials"])
    

    如果您以“写入”模式打开它,则每次都会擦除文件,基本上只写入程序运行的最后一件事。见here

    第一个参数是一个包含文件名的字符串。第二 参数是另一个字符串,其中包含一些描述 文件的使用方式。模式可以是 'r' 当文件将 只能读取,'w' 仅用于写入(具有相同的现有文件 名称将被删除),并且“a”打开文件以进行附加;任何数据 写入文件会自动添加到末尾。 'r+' 打开 用于读取和写入的文件。 mode 参数是可选的; 'r' 如果省略,将被假定。

    【讨论】:

    • 别担心,它确实不是很明显,我今天刚好看过那个教程,所以我记得。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2016-07-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多