从python启动作业,将输出重定向到文件

时间:2013-05-13 22:15:35

标签: python redirect

我有一个脚本update_file,我通常会这样运行:

sudo update_file (file) > ./logs/(file) &

我想知道正确的语法是什么,可以从Python脚本中调用此脚本,并且仍然将它从update_file重定向到文件并将其创建为系统作业。

编辑:我应该注意,我针对多个(file)执行此操作,因此我希望将其作为变量传递。

2 个答案:

答案 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()