1

我对python真的很陌生,经过几个小时的寻找我还没有找到解决方案(或者无法理解其他人提供的解决方案)。

我想检查文件夹中具有相同初始名称“pid”的多个文件的内容,后跟一个不连续的整数,以确保它们都包含“完成”一词。这些文件包含一个单词。

我最初的想法是使用

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

非常感谢任何帮助!

4

2 回答 2

3

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

import glob
for fn in glob.glob('pid*'):
    with open(fn) as f:
        if 'done' in f.read():
            ...
于 2012-08-10T11:32:58.513 回答
2

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

并且请...停止为可以在 python 本身中轻松完成的事情调用 shell 命令

于 2012-08-10T11:22:08.723 回答