【问题标题】:using CSV module with readline()使用带有 readline() 的 CSV 模块
【发布时间】:2011-08-25 15:12:29
【问题描述】:

昨天我发布了以下链接: Python CSV Module read and write simultaneously

一些人建议我“如果文件 b 不是非常大,我建议使用 readlines() 来获取所有行的列表,然后遍历列表并根据需要更改行。”

我希望仍然能够使用 CSV 模块的功能,但按照他们的建议去做。我是 python 新手,但仍然不太了解我应该如何做到这一点。

谁能给我一个例子来说明我应该如何做到这一点。

【问题讨论】:

    标签: python csv readline


    【解决方案1】:

    这是一个使用 DictReader 读取 CSV 文件并使用 DictWriter 写入标准输出的示例。该文件有一个名为 PERCENT_CORRECT_FLAG 的列,这会修改 CSV 文件以将此字段设置为 0。

    #!/usr/bin/env python
    from __future__ import with_statement
    from __future__ import print_function
    
    from csv import DictReader, DictWriter
    import sys
    
    def modify_csv(filename):
        with open(filename) as f:
            reader = DictReader(f)
            writer = DictWriter(sys.stdout, fieldnames=reader.fieldnames)
            for i, s in enumerate(writer.fieldnames):
                print(i, s, file=sys.stdout)
            for row in reader:
                row['PERCENT_CORRECT_FLAG'] = '0'
                writer.writerow(row)
    
    if __name__ == '__main__':
        for filename in sys.argv[1:]:
            modify_csv(filename)
    

    如果您不想写入标准输出,您可以打开另一个文件进行写入并使用它。请注意,如果您想写回原始文件,您必须:

    1. 将文件读入内存并关闭文件,然后再打开以进行写入或

    2. 打开一个不同名称的文件进行写入,关闭后重命名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 2018-12-11
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      相关资源
      最近更新 更多