2024-04-19 21:16:02 发布
网友
我在python中有一个命令:
os.system('echo {{"value": {0:0.0f}}} | /usr/bin/cmd -parameters'.format(value))
问题是我得到的是价值而不是“价值”。我想在shell中有“值”。我试过用三重双引号,斜杠和json.dumps文件. 没什么帮助,还是看重而不是“价值”。在
你能帮帮我吗?在
os.system已弃用。使用subprocess,这样可以很好地处理引用。在
os.system
subprocess
由于您有一个管道,您通常需要创建2个subprocess对象,但这里您只想提供标准输入,因此:
import subprocess p = subprocess.Popen(["/usr/bin/cmd","-parameters"],stdin=subprocess.PIPE) p.communicate('{{"value": {:0.0f}}}\n'.format(value).encode()) # we need to provide bytes rc = p.wait()
引用问题已经消失了,因为您没有使用系统命令来提供参数,而是使用纯python。在
为了测试这一点,我将命令改为more,这样我就可以在windows上运行它了(这也证明了这是可移植的):
more
打印:{"value": 12}
{"value": 12}
如果你想回显引号,你需要转义它们。在
例如:
echo "value"
value
"value"
所以你的python代码应该是
os.system('echo {{\\"value\\": {0:0.0f}}} | /usr/bin/cmd -parameters'.format(value))
注意,应该使用双斜杠\\,因为python会转义一个斜杠。在
\\
os.system
已弃用。使用subprocess
,这样可以很好地处理引用。在由于您有一个管道,您通常需要创建2个
subprocess
对象,但这里您只想提供标准输入,因此:引用问题已经消失了,因为您没有使用系统命令来提供参数,而是使用纯python。在
为了测试这一点,我将命令改为
^{pr2}$more
,这样我就可以在windows上运行它了(这也证明了这是可移植的):打印:
{"value": 12}
如果你想回显引号,你需要转义它们。在
例如:
^{pr2}$所以你的python代码应该是
注意,应该使用双斜杠
\\
,因为python会转义一个斜杠。在相关问题 更多 >
编程相关推荐