[英]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.