我试图在python中使用子进程在linux上运行一些脚本, 但是我的道路不适用于我想做的事情。
我正在使用:
subprocess.Popen(["nohup", "python", DIR4, DIR2 + dirname + /* + '/*.json'])
DIR4 = path of python, DIR2+dirname
是我想要进入的目录。
从这里开始,我想使用DIR2+dirname
中的所有子目录以及所有子目录中的所有json文件。
所以例如:
DIR2+dirname = /tmp/test/
在/tmp/test/
目录中,有/tt1, /tt2, /tt3
每个/tt
目录包含1.json, 2.json, 3.json
如何使用我的命令一直调用这一切?
答案 0 :(得分:0)
使用this StackOverflow question的已接受答案,从DIR2+dirname
开始,作为查找所有JSON文件的路径。
这个片段是从那里复制的并略微适应:
import fnmatch
import os
matches = []
for root, dirnames, filenames in os.walk(DIR2 + dirname):
for filename in fnmatch.filter(filenames, '*.json'):
matches.append(os.path.join(root, filename))
subprocess.Popen(["nohup", "python", DIR4] + matches)
如果您有许多文件,请记住命令行长度存在特定于操作系统的限制,请参阅此ServerFault question。
答案 1 :(得分:0)
使用glob模块:
import os.path
import glob
jsons = glob.glob(os.path.join(DIR2, dirname, '*', '*.json'))
subprocess.Popen(["nohup", "python", DIR4] + jsons)