我有一个脚本update_file
,我通常会这样运行:
sudo update_file (file) > ./logs/(file) &
我想知道正确的语法是什么,可以从Python脚本中调用此脚本,并且仍然将它从update_file
重定向到文件并将其创建为系统作业。
(file)
执行此操作,因此我希望将其作为变量传递。
答案 0 :(得分:2)
import subprocess
subprocess.call("sudo update_file(file)",stdout=open("logs/(file)","w"))
可能?
答案 1 :(得分:1)
首先,subprocess
模块是您从Python执行程序的方式。文档中的Replacing Older Functions with the subprocess
Module部分向您展示了如何将典型的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()