如果存在,则替换文件中以字符串开头的行,如果不存在则添加
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果存在,则替换文件中以字符串开头的行,如果不存在则添加相关的知识,希望对你有一定的参考价值。
我创建了代码来检查是否存在以字符串开头的行,如果存在则更新,如果不存在则添加。它工作,但我认为它可能有另一种方式,而不是打开文件,关闭它三次!
我的文字是(试试)
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}
" .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)
以上是关于如果存在,则替换文件中以字符串开头的行,如果不存在则添加的主要内容,如果未能解决你的问题,请参考以下文章