用参数调用程序

dra*_*ide 2 python python-3.x

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

有谁知道一个很好的教程?

Gui*_*ois 6

你不需要它们; 只需将您的文件作为一个程序启动,如下所示

./main.py arg1 arg2 arg3 >some_file
Run Code Online (Sandbox Code Playgroud)

(因为你的文件必须以类似的东西开头#!/usr/bin/env python)

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

arg1 = sys.argv[1]
arg2 = sys.argv[2]
arg3 = sys.argv[3]
Run Code Online (Sandbox Code Playgroud)

  • `> some_file`将输出通过管道传输到一个文件中,该文件肯定会接收输出.如果OP也想在stdout上输出,只需用`tee`替换`>` (2认同)

S.L*_*ott 5

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

步骤1.不要使用subprocess.你这样做是错的.

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

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

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

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

def main():
    options, args = parse_options()
    for name in args:
        process( options, file )
Run Code Online (Sandbox Code Playgroud)

请继续阅读,以确保你看怎么样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 )
Run Code Online (Sandbox Code Playgroud)

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

实际上找出你想要运行的东西的界面.并运行它.