如何调用使用来自另一个 python 脚本的标志的 python 文件?

How to call a python file that uses flags from another python script?

我从另一个使用 absl 的标志模块的开发人员那里获取了一个脚本 (script1.py)。基本上是 运行 这样的:

python script1.py --input1 input1 --input2 input2

我目前有另一个脚本 (script2.py),它为脚本 1 生成输入 1 和输入 2 到 运行。我怎样才能真正将参数从 script2 传递给 script1?我知道我必须导入 script1 但我怎样才能将它指向那些输入?

为此使用 Python subprocess 模块。我假设您使用的是 3.5 或更高版本。在这种情况下,您可以使用 run 函数。

import subprocess

result = subprocess.run(
    ['python', 'script1.py', '--input1 input1', '--input2 input2'],
    capture_output=True)

# Get the output as a string
output = result.stdout.decode('utf-8')

一些注意事项:

  1. 这个例子忽略了 return 代码。代码应检查 result.returncode 并基于此采取正确的操作。
  2. 如果不需要输出,capture_output=True和最后一行可以去掉。

可以找到 subprocess 模块的文档 here

替代(更好)解决方案

更好的解决方案(恕我直言)是将调用的脚本更改为具有您调用的单个函数的模块。然后 python 中的代码 script1.py 可能会被简化很多。脚本中的结果代码将类似于:

from script1 import my_function

my_function(input1, input2)

可能是其他开发者的脚本已经有了可以直接调用的函数。