首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python os.system无效语法

Python os.system无效语法
EN

Stack Overflow用户
提问于 2017-11-12 23:39:42
回答 2查看 4.3K关注 0票数 0

嗨,我想通过shell执行以下命令。

代码语言:javascript
复制
 curl -g -d '{ "action": "block_count" }' [::1]:7076

但是,当插入os.system调用时,我会得到一个无效的语法。什么是正确的语法格式。

代码语言:javascript
复制
#!/usr/bin/env python
import os
import json

aba = os.system('curl -g -d '{ "action": "block_count" }' [::1]:7076')

baba = json.loads(aba)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-12 23:48:28

您可以简单地使用三引号字符串文字,比如:

代码语言:javascript
复制
os.system('''curl -g -d '{"action": "block_count"}' [::1]:7076''')

但是更好的是,使用right工具进行作业,即requests

代码语言:javascript
复制
import requests
data = requests.post('[::1]:7076', json={"action": "block_count"}).json()

如果坚持直接调用curl命令,请使用subprocess模块而不是旧的、不灵活的os.system (对于未严格检查的输入也不安全)。您可以使用subprocess.check_output作为在你的情况下替换。不需要在子subshell中执行curl命令,因此可以拆分curl的参数,例如:

代码语言:javascript
复制
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异常。

票数 4
EN

Stack Overflow用户

发布于 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')

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47255244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档