打开外部程序

时间:2014-02-19 10:55:29

标签: python spawn

我是Python初学者,我有一项任务要做。我必须编写一个函数,它打开一个程序(.bin),执行它以便我可以看到结果。该程序需要命令行中的2个参数。我使用os.spawnv,但它不起作用......

#!/usr/bin/python

import sys
import os

def calculate_chi():
    if len(sys.argv)>1:
        pdb_name=sys.argv[1]
        dat_name=sys.argv[2]
    crysol='/usr/bin/crysol'
    os.spawnv(os.P_NOWAIT,crysol,[crysol,pdb_name,dat_name])

def main():
    calculate_chi()

你能帮助我吗?

3 个答案:

答案 0 :(得分:1)

您可以使用python子进程模块:

import subprocess
proc = subprocess.Popen(['/usr/bin/crysol', sys.argv[1], sys.argv[2]], shell=True,     stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while proc.poll() is None:
    out = proc.stdout.readline() #read crystol's output from stdout and stderr
    print out  
retunValue = proc.wait() #wait for subprocess to return and get the return value

答案 1 :(得分:0)

这些天每个人都使用subprocess.Popen。对您的流程的示例调用将是

process = Popen(["/usr/bin/crysol", pdb_name, dat_name], 
                 stdout=subprocess.PIPE, stderr=subprocess.PIPE)

答案 2 :(得分:0)

使用子流程。它旨在取代产卵。

import subprocess

subprocess.call([crysol, pdb_name, dat_name])