1. 运行效果
通过-c选项,可以在shell或cmd命令行中,直接执行python脚本,效果如下图:
当python脚本,语句脚本,结构较复杂时,可以通过以下三种方式执行。
此处以python处理json文本为例,首先创建以下json.txt文件,内容如下:
{
"detail_err_msg": "",
"err_msg": "",
"err_no": 0,
"result": [
173,
174,
175
],
"sync": false,
"trace_id": "[104a3ad56d8]"
}
计划使用cat json.tx通过管道直接将内容输出给python进行处理,提取result数组的内容。
2. 使用分号
在python中,可以使用分号分隔同级代码,即缩进相同的语句。但在分支、循环等结构语句时,仍然需要传入回车符。
cat json.txt | python -c 'import json,sys;obj=json.load(sys.stdin);list=obj["result"];print(list)'
因分号无法分隔缩进不同的循环体语句,故此处只提取了整个数组,未做进一步处理。
3. 使用$'..\n..'
【参考】:https://www.pythonheidong.com/blog/article/429274/5abe9eb20ed2fe6991b4/
在bash中,可以使用python -c $'...\n...'格式,输入单行内容,即$开头,后跟''引号包含脚本,其中的换行使用\n表示。
cat json.txt | python -c $'import json,sys\nobj=json.load(sys.stdin)\nlist=obj["result"]\nfor i in list:\n print(i)'
4. 使用引号换行
更简单的方式是,使用 python -c '
...
'
方式,直接使用单个引号,引入正常的换行脚本。
cat json.txt | python -c '
import json,sys
obj=json.load(sys.stdin)
list=obj["result"]
for i in list:
print(i)
'
版权归原作者 李强 DST 所有, 如有侵权,请联系我们删除。