【发布时间】:2013-01-10 09:45:11
【问题描述】:
如何调用用 bash 脚本编写的外部程序,使该脚本产生的输出在 sys.stdout 中可用,以便我可以通过 python 将输出记录到文件中。
例如。我现在通过以下 sn-p 调用它们
if os.name == 'nt':
path = module_dir_run+'/run.bat'
else:
path = module_dir_run+'/run.sh'
if os.path.isfile(path):
if (splitargs.arg):
try:
call([path, splitargs.arg])
except:
pass
else:
try:
call([path])
except:
pass
else:
print "Not found : " + path
当我存储 sys.stdout = file(filename, "w") 的值时,它会存储 python 输出的任何内容,而不是脚本输出的内容。
注意:我试图运行的脚本是一个交互式脚本,所以在调用结束后,控制又回到了 python,我怎样才能得到终端中写的所有内容? 有什么建议吗?
【问题讨论】:
-
是否必须将输出写入
stdout?我建议将其写入文件然后读取文件。 -
你需要包含
call是什么。 -
@InbarRose:
subprocess.call大概。 -
@MartijnPieters 是的,但也许它是一个用某种参数或其他东西实现它的函数......
-
它是必需的,因为如果有人调用像 run modulename > output.txt 这样的函数
标签: python bash python-2.7