0

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

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

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

编辑:我应该注意,我对多个(file)s 运行它,所以我想将它作为变量传递。

4

2 回答 2

2
import subprocess

subprocess.call("sudo update_file(file)",stdout=open("logs/(file)","w"))

也许?

于 2013-05-13T22:20:25.063 回答
1

首先,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()
于 2013-05-13T22:43:02.017 回答