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

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)

以上是关于如果存在,则替换文件中以字符串开头的行,如果不存在则添加的主要内容,如果未能解决你的问题,请参考以下文章

Bash 创建一个字符串,如果字符串已经存在,则替换它

统计python文件中的代码,注释,空白对应的行数

房间更新(如果不存在则插入)行并返回计数更改的行

如果表中的行存在,如何转义当前的 SQLite3 查询,但如果不存在则继续

如果字符仅出现在开头,则替换它

在 2 个分隔线之间操作多行(如果不存在则附加,否则替换)