如何在python中执行cat filename *

时间:2012-08-10 11:19:37

标签: python process wildcard cat

我是python的新手,经过几个小时的观察后,我找不到解决方案(或者无法理解其他人提供的解决方案)。

我想检查几个文件的内容,使用相同的初始名称'pid',后跟文件夹中的非连续整数,以确保它们都包含“done”一词。这些文件只包含一个单词。

我最初的想法是使用

cat pid*

以某种方式将该命令的输出放入列表中,然后横切列表比较值

result = 'Finished'
for x in range(len(myList)):
    if 'done' not in myList[x]:
        result = 'Continue'
        break
if result == 'Finished':
    print 'Finished'

这是我的想法,但我找不到获取包含cat输出的列表的方法。

经过一番挖掘后,我放弃了这个想法并做了一个非常糟糕的实施(我认为)我确信必须有更好的解决方案

filedir = os.popen('ls','r')

for line in filedir:
    print line
    if 'pid' in line:
        filename = open(line.replace('\n', ''), 'r')
        firstline = filename.readline()
        print firstline
        if 'done' not in firstline:
            status = 'RUNNING'
            break
if status == 'DONE':
    print 'Finished'
else:
    print status

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

您可以使用glob模块,该模块根据Unix shell使用的规则“查找与指定模式匹配的所有路径名”:

import glob
for fn in glob.glob('pid*'):
    with open(fn) as f:
        if 'done' in f.read():
            ...

答案 1 :(得分:2)

使用glob执行通配符匹配,然后读取文件。

请... 停止调用shell命令,以便在python本身轻松完成