繁体   English   中英

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM