【发布时间】:2011-10-14 05:37:19
【问题描述】:
我有一个包含以下内容的 csv 文件
1,2,3,4
a,b,c,d
w,x,y,z
我想将此 csv 文件内容更新为
1,2,3,4
a,b,c,d,k
w,x,y,z
有人可以分享此更新过程的 Python 代码吗?
【问题讨论】:
我有一个包含以下内容的 csv 文件
1,2,3,4
a,b,c,d
w,x,y,z
我想将此 csv 文件内容更新为
1,2,3,4
a,b,c,d,k
w,x,y,z
有人可以分享此更新过程的 Python 代码吗?
【问题讨论】:
使用 csv 库,我们读入数据,将其转换为列表列表,将 k 附加到相关列表中,然后再次将其写出。
import csv
data = csv.reader(open("input.csv"))
l = list(data)
l[1].append("k")
our_writer = csv.writer(open("output.csv", "wb"))
our_writer.writerows(l)
虽然 csv 库对于您的玩具箱不是完全必要的,但使用可很好扩展的方法通常会很好。
【讨论】:
with 语句有助于正确关闭文件。要就地更新文件,您可以写入临时文件并在成功时将其重命名。您应该对输出文件使用'wb' 模式。如果您将所有行加载到内存中,那么writer.writerows() 允许您一次写入所有行。
这种简单的情况不需要csv:
# sed '2s/$/,k/'
import fileinput
for lineno, line in enumerate(fileinput.input(inplace=True), start=1):
if lineno == 2:
line = line.rstrip('\n') + ",k\n"
print line,
例子:
$ python update_2nd_line.py data_to_update.csv
它会就地更新data_to_update.csv 文件。
【讨论】: