作者liangjr (aaa)
看板Python
标题Re: 在python里grep某个档案的其中一行
时间Tue May 13 16:07:24 2008
※ 引述《suss ()》之铭言:
: 我现在有一个txt档案 假设叫tmb.txt
: 大概像这样
: def pion_gjets
: status: closed
: Total events: 535
: 当然稍微更长一点
: 但总之 我需要535这个数字 接在Total events後面的
: 我试着用 Line=os.system("cat tmb.txt | grep Total")
: 意图再把Line split就可以拿到那个数字
: 问题是 这样做的结果 Line永远只传回0
: 然後会把grep的结果 Total events: 535 印在萤幕上
: 我现在用非常笨的方法 readlines
: 然後找出有Total这行 再找到535这个数字
: 请问各位大大能否提供一些比较聪明的方法?
: 我更想知道的是像用os.system做ls, grep等等
: 怎麽能拿回结果 而不是回传值0?
: 非常感谢^^
os.system回传的是程式terminate时的回传值
正常结束都是0
要拿stdout可以用popen3
但何不用readlines搭配re模组
f = open("tmb.txt", "r")
for line in f.readlines():
m = re.search("Total events: (\d*)", line)
if m:
print m.group(1)
应该就会找到你要的吧?
--
http://nigel.twbbs.org
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 76.95.86.77
※ 编辑: liangjr 来自: 76.95.86.77 (05/13 16:11)
1F:推 suss:我後来发现可以用popen2 但执行速度似乎慢了些 是错觉吗? 05/13 17:52
2F:→ suss:感谢回应 因为是python新手 所以很多模组还不太懂...orz 05/13 17:53