我有以下python脚本
get = int(subprocess.run(["electrum","getbalance"]))
if get > 0:
print("something")
我得到以下错误TypeError: int()参数必须是字符串、类字节对象或数字,而不是'CompletedProcess'
getbalance的输出是:{信用证上还用写明"保:"0.000001";}
如果余额高于0,我如何比较并打印一些东西?
run
函数返回subprocess.CompletedProcess
类的一个实例。
根据文档,您可以使用stdout
属性从子进程获取捕获的标准输出。注意,这将返回一个字节序列(因为调用run()
时没有编码、错误或text=True
)
还可以捕获stdout
和stderr
,将capture_output=True
传递到run
功能。
的例子:
>>> from subprocess import run
>>> completed_process = run(['powershell.exe', '-c', 'Write-Output "Hello"'], capture_output=True)
>>> type(completed_process)
<class 'subprocess.CompletedProcess'>
>>> completed_process.stdout
b'Hellorn'
>>> type(completed_process.stdout)
<class 'bytes'>
我想这应该能奏效:
output = subprocess.run(your_command_here, capture_output=True, text=True)
这将返回一个"completedprocess"。然后你可以检查是否一切顺利:
if(output.returncode == 0):
# do stuffs
看看你说你的命令返回{ "confirmed": "0.000001" }
的输出,我猜python将使用它作为JSON。所以你可以得到& 0.000001"值:
import json
data = output.stdout
data = json.loads(data)
what_you_want = data['confirmed']
代码是这样的:
import json
output = subprocess.run(your_command_here, capture_output=True, text=True)
if(output.returncode == 0):
data = output.stdout
data = json.loads(data)
what_you_want = data['confirmed']
PS:我没有尝试这个代码,我不知道它是否运行。