在python

时间:2018-12-31 12:41:02

标签: python

我编写了一个python代码,该代码执行bash命令并将输出保存在txt文件中,现在我想读取实际上始终包含第2行中的详细信息的txt文件,并在输出存在时打印true并将邮件发送给用户。

寻找进一步的解决方案,如何读取文件output.txt的特定第二行输出,并在存在该行的情况下显示true,从而向用户发送邮件,否则就再见了。

该方法非常新,请提供帮助。 TIA。

import subprocess
p = subprocess.Popen("bash command > output.txt", stdout=subprocess.PIPE, shell=True)
(output, err) = p.communicate()
p_status = p.wait()
print "command exit status/return code: ", p_status

以上代码以以下格式在txt文件中输出输出

PID  PPID %CPU     ELAPSED COMMAND
3435 1     0       4-05:20:09 

要求:从"3435 1 0 4-05:20:09 "行开始阅读,并在该行存在时打印true,然后向用户发送邮件。如果"PID PPID %CPU ELAPSED COMMAND"之后未输出,则不发送邮件

2 个答案:

答案 0 :(得分:2)

您可以像这样使用它:

lines = output.split('\n')

现在您可以按索引访问行,例如lines[1]  或lines[1:]

您需要从命令中删除> output.txt才能在output变量而不是output.txt文件中获取输出

答案 1 :(得分:1)

您可以像这样从文件创建行列表:

with open('output.txt') as input_file:
    lines_list = input_file.readlines()    
if len(lines_list) > 1:
    lines_list=lines_list[1:] # drop the first line
    send_mail()
else:
    print ("else condition")

您打开文件以使用"r"进行读取,并建立行列表。如果列表长于1,则通过删除第一行来构建新列表