python中的命令行输出逐行读取,将行中的每个值放入数组并调用

python中的命令行输出逐行读取,将行中的每个值放入数组并调用,python,arrays,split,Python,Arrays,Split,我试图捕获一个命令的输出,并将每一行都放在一个数组中,这样我就可以将行中的某个位置作为常量进行计算,如果这样做有意义的话。它几乎将输出视为列 我基本上给一个变量分配了一个命令输出,并在每行分割它。我可以做一个拆分,得到第一个“列”,但我似乎无法通过这个 我已经将代码分成几个部分来显示我看到的输出。我正在运行一个端口来评估一些登录活动 #!/usr/bin/python import os import platform import fnmatch import subprocess res

我试图捕获一个命令的输出,并将每一行都放在一个数组中,这样我就可以将行中的某个位置作为常量进行计算,如果这样做有意义的话。它几乎将输出视为列

我基本上给一个变量分配了一个命令输出,并在每行分割它。我可以做一个拆分,得到第一个“列”,但我似乎无法通过这个

我已经将代码分成几个部分来显示我看到的输出。我正在运行一个端口来评估一些登录活动

#!/usr/bin/python

import os
import platform
import fnmatch
import subprocess

results = subprocess.check_output("aureport -ts yesterday -te now  -au -i --failed", shell=True).splitlines()
print(results)


for line in results:
  print(line)

for line in results:
  arg = line.split(' ')
  item1 = arg[0]
  print(item1)
exit(0)
我得到的结果是:

['', 'Authentication Report', '============================================', '# date time acct host term exe success event', '============================================', '1. 00/00/00 06:49:24 some_user ? host /some/command no some_pid', '2. 00/00/00 06:49:27 some_user ? host /some/command no some_pid', '3. 00/00/00 06:49:29 some_user ? host /some/command no some_pid', '4. 00/00/00 07:10:44 some_user ? host /some/command no some_pid', '5. 00/00/00 07:10:49 some_user ? host /some/command no some_pid', '6. 00/00/00 07:10:53 some_user ? host /some/command no some_pid', '7. 00/00/00 07:11:14 some_user ? host /some/command no some_pid', '8. 00/00/00 07:11:16 some_user ? host /some/command no some_pid', '9. 00/00/00 07:11:25 some_user ? host /some/command no some_pid', '10. 00/00/00 06:19:44 some_user ? host /some/command no some_pid', '11. 00/00/00 06:19:47 some_user ? host /some/command no some_pid', '12. 00/00/00 06:20:59 some_user host command /some/command no some_pid', '13. 00/00/00 06:21:01 some_user ::1 command /some/command no some_pid']

Authentication Report
============================================
# date time acct host term exe success event
============================================
1. 00/00/00 06:49:24 some_user ? host /some/command no some_pid
2. 00/00/00 06:49:27 some_user ? host /some/command no some_pid
3. 00/00/00 06:49:29 some_user ? host /some/command no some_pid
4. 00/00/00 07:10:44 some_user ? host /some/command no some_pid
5. 00/00/00 07:10:49 some_user ? host /some/command no some_pid
6. 00/00/00 07:10:53 some_user ? host /some/command no some_pid
7. 00/00/00 07:11:14 some_user ? host /some/command no some_pid
8. 00/00/00 07:11:16 some_user ? host /some/command no some_pid
9. 00/00/00 07:11:25 some_user ? host /some/command no some_pid
10. 00/00/00 06:19:44 some_user ? host /some/command no some_pid
11. 00/00/00 06:19:47 some_user ? host /some/command no some_pid
12. 00/00/00 06:20:59 some_user host command /some/command no some_pid
13. 00/00/00 06:21:01 some_user ::1 command /some/command no some_pid

Authentication
============================================
#
============================================
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
我想做的是在输出中显示“否”的“列”上创建一些计算(作为示例),然后打印该行其余部分的输出。示例:
如果arg[7]=“否”:打印(arg[4])


我似乎无法理解的是,如何逐行计算输出,因此arg[7]总是指“否”列等。我确实通过在空格上拆分来获得第一列,但我很确定这是巧合:)

如果我理解你的问题,您需要做的就是将
if
语句放入
for
循环中。然后它将逐行评估输出。因此,您的最后一部分可以如下所示:

for line in results[5:]:
    arg = line.split()
    if arg[7] == 'no':
        print(arg[4])
注意:我将
line.split(“”)
更改为
line.split()
,因为
split()
的默认操作是用空格分隔


[4::
删除了您没有考虑的行:
'.'.'.'.'.'.'.'等等。

问题是我甚至没有返回arg[除0以外的任何值]。我对测试所做的是尝试为偶数arg[7]分配一个变量:
用于结果中的行:arg=line.split()item1=arg[7]print(item1)
输出只是
回溯(最近一次调用):item1=arg[7]中的文件“/test.py”,第15行索引器:列表索引超出范围
我还尝试更改
行。拆分(“”)
,得到与上面相同的错误。有了它,我得到了最初发布的输出,我想我不明白你想要实现什么。为什么要将某些内容分配给
arg[1]
?您希望如何处理评估的数据?您检查了我的解决方案的输出了吗?我没有仅仅更改
split(“”)
:还要检查
if
语句。在您的代码中,您试图获取字符串
'1:'
'2:'
等的索引7,但这些字符串不存在。我试图将arg[whatever]分配给一个变量,以便稍后进行计算。您的解决方案的输出与我尝试仅打印和值而不是
arg[0]
索引器:列表索引超出范围时的输出相同