我有一个脚本,update_file
我通常像这样运行:
sudo update_file (file) > ./logs/(file) &
我想知道正确的语法/是否可能,从 Python 脚本中调用此脚本并仍然让它将输出重定向update_file
到文件并将其创建为系统作业。
编辑:我应该注意,我对多个(file)
s 运行它,所以我想将它作为变量传递。
import subprocess
subprocess.call("sudo update_file(file)",stdout=open("logs/(file)","w"))
也许?
首先,subprocess
模块是您从 Python 执行程序的方式。文档中的用模块替换旧函数subprocess
部分向您展示了如何将典型的 shell 功能转换为 Python。
因为您使用&
的是后台任务,所以您需要创建一个Popen
,并在以后进行作业处理。所以:
jobs = []
# ... each time you want to run it on a file ...
jobs.append(subprocess.Popen(['sudo', 'update_file', file],
stdout=open(os.path.join('logs', file), 'w'))
# ... at exit time ...
for job in jobs:
job.wait()
job.stdout.close()