在Python中在文本文件的特定行追加数据?

6 投票
2 回答
25211 浏览
提问于 2025-04-18 00:48

假设我有一个文本文件:date.txt,里面的内容是:月份|日期|年份

January|20|2014
February|10|
March|5|2013

我想在“二月|10|”后面加上“2012”,我该怎么做呢?

2 个回答

1

你可以使用csv模块,举个例子:

import csv

data = [
    "January|20|2014",
    "February|10|",
    "March|5|2013"
]

reader = csv.reader(data, delimiter="|")
for line in reader:
    line = [i if i != "" else "2012" for i in line]
    print(line)

请注意:csv.reader()可以接收任何可迭代的对象作为参数。所以,你可以很方便地把一个文件对象传给它。

13

你需要把文件读到内存中,修改你想要的那一行,然后再把文件写回去。

temp = open('temp', 'wb')
with open('date.txt', 'r') as f:
    for line in f:
        if line.startswith('February'):
            line = line.strip() + '2012\n'
        temp.write(line)
temp.close()
shutils.move('temp', 'data.txt')

如果你不想使用临时文件:

with open('date.txt', 'r+') as f: #r+ does the work of rw
    lines = f.readlines()
    for i, line in enumerate(lines):
        if line.startswith('February'):
            lines[i] = lines[i].strip() + '2012\n'
    f.seek(0)
    for line in lines:
        f.write(line)

撰写回答