![](/img/trans.png)
[英]Is it possible to pass python behave command-line arguments from file
[英]Command-Line requires file as a parameter, how to pass a variable from a Python program and write into?
说,我有命令行实用程序,其中输出文件是强制性参数:
process_data <output file>
我想要的是能够从 Python 代码运行这个 CMD 命令,而不是将结果存储到文件中,而是将其存储到 Python 变量中(有点重定向它):
variable = None # currently empty
os.system(f"process_data {variable}")
在实用程序运行时结束时,我希望将内容放入该变量中,该变量应该写入“输出文件”:
print("output: ", variable)
output: "Data is processed successfully, here is the content of processing: ..."
调用外部程序的一种更简洁的方法是使用 python subprocess
模块。 你有两种主要的使用方式。
import subprocess
variable = None
subprocess.call(["process_data", variable])
输出将打印在标准输出中,但您不会在 python 变量中得到它。
但是,您也可以使用附加参数指定不向用户显示输出。
import subprocess
variable = None
out = subprocess.check_output(["process_data", variable])
编辑:在我的示例中,变量是process_data
的参数,而不是存储输出的变量
解决方案在这里:
variable = None
response = subprocess.run(["process_data", "/dev/stdout"], capture_output=True)
variable = response.stdout
如果是文本输出,我建议添加“text=True”标志:
response = subprocess.run(["process_data", "/dev/stdout"], capture_output=True, text=True)
最好有一个“timeout=...”标志,以防你的 cmd 挂起:
response = subprocess.run(["process_data", "/dev/stdout"], capture_output=True, text=True, timeout=10)
不要忘记经常检查:
if response.returncode != 0:
# do something :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.