我正在尝试串联许多具有相同名称且位于不同目录中的不同日志文件。文件名采用fit_objectname.log
的形式,其中objectname
有所不同。由于我有很多这样的对,因此我试图在python中的for循环中完成此操作,如下所示:
import re
import glob
from subprocess import Popen, PIPE, STDOUT
new_logfiles = glob.glob('/Users/myusername/Desktop/subdir1/fit*.log')
for log in new_logfiles:
filename = re.search(r'(fit.+?\.log)', log)[1]
cmd = "cat /Users/myusername/Desktop/subdir1/{} /Users/myusername/Desktop/subdir2/{} >> {}_concat.log".format(filename, filename, filename[:-4])
p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
但是,串联不起作用。保存的每个fit_objectname_concat.log
文件的结果只是subdir1
中日志文件的内容。
我已将问题隔离到循环中,因为如果我仅在一个文件对上(在终端或python脚本中)运行此命令,它将起作用:
cmd = "cat /Users/myusername/Desktop/subdir1/fit_obj1.log /Users/myusername/Desktop/subdir2/fit_obj1.log > fit_obj1_concat.log"
p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
我还尝试在循环中的每次迭代之后添加一个time.sleep(2)
语句,但是我遇到了同样的问题。知道这里会发生什么吗?