我正在瀏覽大量文件並在其上運行一個命令。我想記錄輸出,如果該命令需要超過5分鐘的文件,我想停止命令並轉到下一個文件。使用python記錄文件和進程超時輸出
我有兩個問題:
我想要的文件名記錄到輸出文件,也記錄輸出消息。我正在使用
Popen
來記錄消息並使用communicate
,因此它被記錄下來,但是我寫的write()
的所有文件名在完成整個任務之前不會被寫入。我不知道如何輪詢過程並在5分鐘後退出並轉到下一個文件。
下面簡化代碼:
import os, fnmatch
import subprocess
import sys
f=open('filenames','w')
'Locate all files matching supplied filename pattern in and below supplied root directory.'''
def locate(pattern, root=os.curdir):
for path, dirs, files in os.walk(os.path.abspath(root)):
for filename in fnmatch.filter(files, pattern):
yield os.path.join(path, filename)
for filename in locate("*.dll"):
f.write(filename)
#cmd defintion is changed for simplicity
cmd='cat %s' %filename
p=subprocess.Popen(cmd,stdout=f)
p.communicate()[0]
縮進代碼,以便其格式化請:)其斬波換行符等 – loosecannon 2011-02-10 23:30:14