使用Python解析shell文件输出

时间:2009-04-15 12:55:19

标签: python

我有一个包含数据的文件。该文件是从shell脚本文件生成的输出:

|a                     |869         |
|b                     |835         |
|c                     |0           |
|d                     |0           |
|e                     |34          |
|f                     |3337     

如何从中获得= 869?

4 个答案:

答案 0 :(得分:9)

你可以这样做:

output = {}
for line in open("myfile"):
    parts = line.split('|')
    output[parts[1].strip()] = parts[2].strip()

print output['a'] // prints 869
print output['f'] // prints 3337

或者,使用csv模块,如Eugene Morozov所建议的那样:

import csv
output = {}
reader = csv.reader(open("C:/output.txt"), delimiter='|')
for line in reader:
    output[line[1].strip()] = line[2].strip()

print output['a'] // prints 869
print output['f'] // prints 3337

答案 1 :(得分:4)

lines =  file("test.txt").readlines()
d = dict([[i.strip() for i in l.split("|")[1:3]] for l in lines if l.strip()])

例如:

>>> lines =  file("test.txt").readlines()
>>> d = dict([[i.strip() for i in l.split("|")[1:3]] for l in lines if l.strip()])
>>> d['a']
'869'

答案 2 :(得分:3)

您还可以将csv模块与分隔符|一起使用。

答案 3 :(得分:0)

也许不是最恐怖的方式,但是如果你的shell输出存储在f.txt中并且你正在寻找要处理的每一行,这应该可行:

h = open("f.txt", "rt")
inp = h.readline()
while inp:
  flds = inp.split('|')
  str = flds[1].strip() + " = " + flds[2].strip()
  print str
  inp = h.readline()