如何调用使用来自另一个 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')
一些注意事项:
- 这个例子忽略了 return 代码。代码应检查
result.returncode
并基于此采取正确的操作。
- 如果不需要输出,
capture_output=True
和最后一行可以去掉。
可以找到 subprocess
模块的文档 here。
替代(更好)解决方案
更好的解决方案(恕我直言)是将调用的脚本更改为具有您调用的单个函数的模块。然后 python 中的代码 script1.py
可能会被简化很多。脚本中的结果代码将类似于:
from script1 import my_function
my_function(input1, input2)
可能是其他开发者的脚本已经有了可以直接调用的函数。
我从另一个使用 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')
一些注意事项:
- 这个例子忽略了 return 代码。代码应检查
result.returncode
并基于此采取正确的操作。 - 如果不需要输出,
capture_output=True
和最后一行可以去掉。
可以找到 subprocess
模块的文档 here。
替代(更好)解决方案
更好的解决方案(恕我直言)是将调用的脚本更改为具有您调用的单个函数的模块。然后 python 中的代码 script1.py
可能会被简化很多。脚本中的结果代码将类似于:
from script1 import my_function
my_function(input1, input2)
可能是其他开发者的脚本已经有了可以直接调用的函数。