用参数调用程序

时间:2010-07-23 09:33:02

标签: python python-3.x

我想用参数启动一个python文件(.py),并在完成后接收它的输出。我已经听说过“popen”和“subprocess.call”但我找不到任何教程如何使用它们

有没有人知道一个好的教程?

4 个答案:

答案 0 :(得分:5)

你不需要它们;只需将您的文件作为程序启动,例如

./main.py arg1 arg2 arg3 >some_file

(为此你的文件必须以#!/usr/bin/env python

之类的东西开头

使用sys模块,您可以访问它们:

arg1 = sys.argv[1]
arg2 = sys.argv[2]
arg3 = sys.argv[3]

答案 1 :(得分:5)

  

我想用参数启动一个python文件(.py),并在完成后接收它的输出。

步骤1.不要使用subprocess。你做错了。

步骤2.阅读您要运行的Python文件。我们称之为runme.py

步骤3.再次阅读。如果它写得很好,那么会有一段代码启动if __name__ == "__main__":。以下是该文件的“外部接口”。由于您未在问题中提供任何信息,我认为它看起来像这样。

if __name__ == "__main__":
    main()

步骤4.读取调用脚本调用的“main”函数。由于您没有提供任何信息,我认为它看起来像这样。

def main():
    options, args = parse_options()
    for name in args:
        process( options, file )

继续阅读以确保了解parse_optionsprocess的工作原理。我假设parse_options使用optparse

步骤5.编写“调用”脚本。

 import runme
 import sys
 import optparse
 options = options= optparse.Values({'this':'that','option':'arg','flag':True})
 with open( "theoutput.out", "w" ) as results:
     sys.stdout= results
     for name in ('some', 'list', 'of', 'arguments' ):
         runme.process( options, name )

这是从Python中运行Python文件的正确方法。

实际上找出你想要运行的东西的界面。然后运行它。

答案 2 :(得分:1)

runme.py

print 'catch me'

<强> main.py

import sys
from StringIO import StringIO

new_out = StringIO()
old_out = sys.stdout
sys.stdout = new_out

import runme

sys.stdout = old_out

new_out.seek(0)
print new_out.read()

和...

$ python main.py 
catch me

答案 3 :(得分:0)

除非你想要从Python 中启动Python文件?在这种情况下,它甚至更好:

import nameOfPythonFile