我想用参数启动一个python文件(.py)并在完成后接收它的输出.我已经听说过"popen"和"subprocess.call"但我找不到任何教程如何使用它们
有谁知道一个很好的教程?
你不需要它们; 只需将您的文件作为一个程序启动,如下所示
./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)
我想用参数启动一个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_options和process工作.我会假设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文件的正确方法.
实际上找出你想要运行的东西的界面.并运行它.