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

问题描述 投票:0回答:1

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

我的文字是(试试)

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()

python-2.7
1个回答
0
投票

这个怎么样:

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)
© www.soinside.com 2019 - 2024. All rights reserved.