嗨,我想通过shell执行以下命令。
curl -g -d '{ "action": "block_count" }' [::1]:7076但是,当插入os.system调用时,我会得到一个无效的语法。什么是正确的语法格式。
#!/usr/bin/env python
import os
import json
aba = os.system('curl -g -d '{ "action": "block_count" }' [::1]:7076')
baba = json.loads(aba)发布于 2017-11-12 23:48:28
您可以简单地使用三引号字符串文字,比如:
os.system('''curl -g -d '{"action": "block_count"}' [::1]:7076''')但是更好的是,使用right工具进行作业,即requests
import requests
data = requests.post('[::1]:7076', json={"action": "block_count"}).json()如果坚持直接调用curl命令,请使用subprocess模块而不是旧的、不灵活的os.system (对于未严格检查的输入也不安全)。您可以使用subprocess.check_output作为在你的情况下替换。不需要在子subshell中执行curl命令,因此可以拆分curl的参数,例如:
import subprocess
output = subprocess.check_output(['curl', '-g', '-d', '{"action": "block_count"}', '-s', '[::1]:7076'])
data = json.loads(output)请注意,check_output将返回执行的命令的标准输出(就像os.system那样),但如果该命令在非零状态下失败,则会引发CalledProcessError异常,如果找不到该命令,则会引发OSError异常。
发布于 2017-11-12 23:44:22
你需要转义单引号。因此,改变这一点:
aba = os.system('curl -g -d '{ "action": "block_count" }' [::1]:7076')
对此:
aba = os.system('curl -g -d \'{ "action": "block_count" }\' [::1]:7076')
https://stackoverflow.com/questions/47255244
复制相似问题