gpt4 book ai didi

python - 使用 python 记录文件和进程超时的输出

转载 作者:行者123 更新时间:2023-12-01 06:12:39 26 4
gpt4 key购买 nike

我正在浏览一大堆文件并对所有文件运行命令。我想记录输出,如果该命令对一个文件花费的时间超过 5 分钟,我想停止该命令并转到下一个文件。

我有两个问题:

  1. 我想将文件名记录到输出文件中,并记录输出消息。我使用 Popen 来记录消息并使用 communicate 来记录消息,但我使用 write() 写入的所有文件名都没有直到整个任务完成后才开始写作。

  2. 我不知道如何轮询进程并在 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]

最佳答案

  1. f.write(filename) 之后使用 f.flush()
  2. 参见Using module 'subprocess' with timeout

关于python - 使用 python 记录文件和进程超时的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4963891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com