在python中查找运行是否正确结束
我正在尝试在多个文件中运行python脚本,并读取其输出。 目前,它仅通过以下方式检查文件是否存在:在python中查找运行是否正确结束,python,Python,我正在尝试在多个文件中运行python脚本,并读取其输出。 目前,它仅通过以下方式检查文件是否存在: if file == "output": 但此输出无法确认运行是否正确完成。正确完成运行后,文件的最后一行是: “此运行在完成” 如何读取最后一行文件? 根据我目前在python方面的知识(新手),我成功地做到了: #!/usr/bin/python3 import os input = "FeMnPSi_EOS_10." for subdirs, dirs, files in os.walk
if file == "output":
但此输出无法确认运行是否正确完成。正确完成运行后,文件的最后一行是:
“此运行在完成”
如何读取最后一行文件?
根据我目前在python方面的知识(新手),我成功地做到了:
#!/usr/bin/python3
import os
input = "FeMnPSi_EOS_10."
for subdirs, dirs, files in os.walk(input):
for file in files:
if file == "out-Dy-eos2":
print("file found")
ifile=input+"/"+file
with open(ifile, "r") as if1:
for line in if1:
if "This run finished at" in line:
print("Ends Properly")
此代码的问题是:
- 它不知道“This run finished at”行是否为 文件的倒数第二行李>
- 我不确定,但我猜,在这里 python必须按顺序读取文件…对于这10000多行 每个文件
因此,我可以更好地检查行是否存在,以及最后两行中是否存在行,而不读取整个文件吗?缺少的位是
if1.readlines()
,它将整个文件作为字符串列表读取。然后可以使用切片表示法访问最后一个元素,但只有一个元素
with open(ifile, 'rb') as if1:
if "This run finished at" in if1.readlines()[-2]
print("Ends Properly")
给你。虽然10K+很小,因此您可以
if1.readlines()[-2:]
来获取最后两行。@J.F.Sebastian OP没有说他的行有多长,他正在寻求一种有效的方法。@simonzack:and?你注意到我之前评论中的链接了吗?@J.F.Sebastian我喜欢你链接的算法(比我链接的答案要好),但我觉得你的阅读行的回答不是很相关。@simonzack:。除非OP已经测量并证明简单的解决方案太慢;你不应该尝试更复杂的解决方案。-1用于回答重复的问题。OP不是要求最后n行,只是倒数第二行。