【问题标题】:Amend a csv file in Python在 Python 中修改 csv 文件
【发布时间】:2010-11-05 23:06:14
【问题描述】:

所以我有一个 CSV 文件,里面有一堆 IP:

192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4,192.168.0.5,192.168.0.6,192.168.0.7,192.168.0.8,192.168.0.9,192.168.0.10

我想在这个 csv 文件的末尾添加一个新的 ip。目前我正在使用此代码读取数据:

requests = csv.reader(open("file.csv", "rb"))
for request in requests:
    for ip in request:
        print "In List: " + str(ip)

这将打印:

In List: 192.168.0.1
In List: 192.168.0.2
In List: 192.168.0.3
In List: 192.168.0.4
In List: 192.168.0.5
...

然后写一个到最后我尝试了很多方法,包括这个:

requestWriter = csv.writer(open("file.csv", "w"))
requestWriter.writerow(["192.168.0.X"])

但是,这会将整个文件替换为新条目。然后,我尝试遍历现有记录并将它们添加到新文件中,但这会将 IP 拆分为它们的 .'s!我在这里错过了什么吗?肯定有 csv 读取器/写入器的修改选项吗?

谢谢

【问题讨论】:

  • 你不是在 Windows 中开发的,不是吗?因为“rb”表示读取+二进制,而 csv 通常不是二进制。这可能有效,因为您正在一个不区分二进制文件和文本文件的系统上进行开发(即 b 无效)。
  • “而且 csv 通常不是二进制的”。由于对于 Windows,它 二进制文件,因此使用“wb”打开 CSV 以确保兼容性更简单。
  • @S.Lott 呃,csv 在 Windows 中是二进制的?
  • @systempuntoout:以一种模糊的方式,是的。来自docs.python.org/library/csv.html#csv.writer。 “如果 csvfile 是一个文件对象,它必须在有区别的平台上使用‘b’标志打开。”它产生影响的平台是什么?你猜对了。窗户。
  • -1:“我无法真正透露我正在开发的系统”。这不可能是真的,除非它是一个 seekrit 定制的操作系统,其中披露作为唯一客户的身份会以某种方式违反国家安全。否则,当出现这种拒绝透露基本事实的情况时,很难确定答案。

标签: python csv


【解决方案1】:

你为什么不直接追加一个新行?

fd = open('file.csv','a')
fd.write(yourCsvRowWithNewIP)
fd.close()

【讨论】:

  • @ing0:您仍然可以使用 CSV 编写器;重要的部分是以'a' 模式打开文件。见docs.python.org/library/functions.html#open
  • @systempuntoout:别忘了逗号!
  • @aaron 没关系,我没有忘记! :)
猜你喜欢
  • 1970-01-01
  • 2017-04-27
  • 2015-05-31
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
相关资源
最近更新 更多