替换文件中以字符串开头的行(如果存在)和添加(如果不存在)



>我创建了代码来检查以字符串开头的行是否存在,如果存在,则更新,如果不存在,则添加它。它可以工作,但我认为它可能有另一种方式,而不是打开文件并关闭它三次!

我的文字是(尝试(

LINE1, 1111111
LINE2, 2222222
LINE4, 4444444 
LINE3, 4444444 

和我尝试的代码:

linename = 'LINE3'  # Variable
num = 3333333  # Variable
f = open('try', "r")
lines = f.readlines()
f.close()
f = open('try', "w")
for line in lines:
    if not line.startswith(str(linename)):
        f.write(line)
f.close()
f = open('try', 'a+')
for line in f:
    if line.startswith(str(linename)):
        break
else:
    f.write("{0}, {1} n" .format(linename, num))
f.close()

这个怎么样:

linename = 'LINE3'
num = 3333333
with open('try', 'r', encoding='utf8') as f:
    lines = f.readlines()
found = False
for i, line in enumerate(lines):
    if line.startswith(linename):
        lines[i] = "{0}, {1}".format(linename, num)
        found = True
        break
if not found:
    lines.append("{0}, {1}".format(linename, num)
with open('try', 'w', encoding='utf8') as f:
    f.writelines(lines)

下一个合乎逻辑的步骤是用它创建一个函数:

def store_in_file(filename, linename, num):
    # ... the above ...

store_in_file('try', 'LINE3', 3333333)

最新更新