Python - 编辑文本文件 - 具体案例

Python - edit text file - specific case

我有一个包含日志条目的文本文件,其中每一行都有特定的 ID。 我的工作是在最后一个日志条目之后直接添加一个新的日志条目。

我的问题是,在最后一个条目下有一个文本,所以最后一个日志条目不是文件的最后一行。

保持简单并使用临时文件。

from io import StringIO

data = '''\
/************************************
    State          ID       Date      
____________________________________     
 *  1.00.00      JVL-344  2019-03-02     
 *  2.00.00      TSL-564  2019-04-16
 *  2.00.00      LLL-764  2019-04-17
 *  version-414  RSC-444  2019-04-21
 *  version-557  JDE-384  2019-04-22
 *************************************/
/*************************************
 *  Lorem ipsum dolor sit amet conset
 *  ur sadipscing elitrlabore et dol
 *  magna aliquyam
 *************************************/
'''
marker = ' *************************************/\n'

f = StringIO(data)
out = StringIO()
found_marker = False
for line in f:
    if line == marker and not found_marker:
        found_marker = True
        out.write(' *  new log entry 1\n')
        out.write(' *  new log entry 2\n')
        out.write(' *  new log entry 3\n')

    out.write(line)

print(out.getvalue())
#I hope it may work for you
test_string = "*  Test  ABC-564  2019-04-16\n"
end_condition = '*/\n'   #update as your condition

with open('text.txt', 'r') as f:
    txt = f.readlines()
f.close()

with open('text.txt', 'w') as f:
    for line in txt:
        if line.endswith(end_condition):
            f.writelines(test_string)
        f.writelines(line)
f.close()

查找 **/ 并在找到的倒数第二个后插入你的行

with open('log.txt', 'r+') as f:
    txt = f.readlines()
    indexes = [i for i, s in enumerate(txt) if '**/\n' in s]
    txt.insert(indexes[len(indexes) - 2], ' *  version-126  JDE-384  2019-04-22\n')
    f.seek(0)
    f.truncate()
    for item in txt:
        f.write("%s" % item)
f.close()