我是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()
你能帮助我吗?
答案 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])