【发布时间】: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 定制的操作系统,其中披露作为唯一客户的身份会以某种方式违反国家安全。否则,当出现这种拒绝透露基本事实的情况时,很难确定答案。