shell命令行执行python

每个脚本都有自己的擅长。

有次实现一个work,使用了shell,php,python看着文件种类多,不方便交接,看着也比较麻烦

减少文件种类数,也是很有必要的。

遇到的场景:shell程序需要从json中获取信息,继续处理。

文件, json.txt

{
    "name": "中国",
    "province": [{
        "name": "黑龙江",
        "cities": {
            "city": ["哈尔滨", "大庆"]
        }
    }, {
        "name": "广东",
        "cities": {
            "city": ["广州", "深圳", "珠海"]
        }
    }
]
}

可以在shell中直接调用python(注意load 与 loads的区别)

[email protected]:~/Desktop/test$ cat json.txt  | /usr/bin/python2.7 -c "import json; import sys; obj=json.load(sys.stdin); print obj[‘province‘][1][‘name‘].encode(‘utf-8‘)"
广东
[email protected]:~/Desktop/test$ cat json.txt  | /usr/bin/python2.7 -c "import json; import sys; obj=json.load(sys.stdin); print obj[‘province‘][1][‘cities‘][‘city‘][1].encode(‘utf-8‘)"
深圳

其他链接:

http://www.cnblogs.com/xudong-bupt/p/6218140.html

http://www.cnblogs.com/xudong-bupt/p/7291645.html

原文地址:https://www.cnblogs.com/xudong-bupt/p/9091582.html

时间: 2024-10-11 08:18:25

shell命令行执行python的相关文章

命令行执行python模块时提示包找不到的问题

庄稼人不是专职python开发的道友,虽然与python相识已多年,可惜相识不相知,只是偶尔借助pydev写一些简单的小工具. 多年来,一直困惑于这样一个问题:同样的工程,同样的代码,使用pydev可以运行任意一个python脚本,而使用命令行运行却不行?命令行下(或者双击执行)总是提示"ImportError: No module named xxx"?pydev究竟做了什么魔术呢? 长话短说,以上面工程为例,如果是在命令行中直接执行 python c.py , 都会提示"

SylixOS下Shell命令行执行模块内函数

1. 适用范围 本文档介绍了在Shell命令行执行内核模块内函数实现原理.   在VxWorks中,系统自带有在Shell命令行直接执行驱动.应用内函数的功能,此功能完善了驱动开发工程师.应用开发工程师的开发.调试的手段.为了让这类工程师能快速适应SylixOS,据此开发了类似的功能模块,目前第一版支持在Shell命令行执行内核模块内的函数. 2. SylixOS内核模块动态加载原理 2.1 SylixOS中的ELF文件 SylixOS中的ELF文件主要有三种: - obj文件: 一个源文件编译

解决命令行执行shell脚本成功,但crontab执行失败

实际生产案例 生产机房自建PPTP客户端通过拨号连接到生产机房,但是一旦客户端网络是意外断线再重新拨号 会产生IP冲突,于是写了一个脚本监控PPTP的IP是否有多个(一般冲突以后会生成2个IP) #!/bin/bash #author Liuyueming . /etc/profile #开始没有加这个环境变量 for i in {10..35} do n=`ifconfig|grep 10.13.0.${i}|wc -l` #循环取ip并计数 # echo `ifconfig|grep 10.

python程序在命令行执行提示ModuleNotFoundError: No module named 'XXX' 解决方法

原文链接:https://www.cnblogs.com/dreamyu/p/7889959.html 在ide中执行python程序,都已经在默认的项目路径中,所以直接执行是没有问题的.但是在cmd中执行程序,所在路径是python的搜索路径,如果涉及到import引用就会报类似ImportError: No module named xxx这样的错误,解决方法: 在报错的模块中添加: import sys import os curPath = os.path.abspath(os.path

Beginning Python From Novice to Professional (2) - 命令行运行Python脚本

命令行运行Python脚本 Linux下先创建一个hello.py [python] view plaincopy $ gedit hello.py 输入: [python] view plaincopy #!/usr/bin/env python print 2+2 保存退出,运行: [python] view plaincopy $ python hello.py 4 我们也可以让它变得和普通程序一样执行 执行之前,让脚本文件具备可执行属性: [python] view plaincopy

Shell命令行中特殊字符与其转义详解(去除特殊含义)

特殊符号及其转义 大家都知道在一个shell命令是由命令名和它的参数组成的, 比如 cat testfile, 其中cat是命令名, testfile是参数. shell将参数testfile传递给cat命令. 但是, 如果参数中含有特殊字符, 比如说*, *我们知道,是表示任意多个(包括0个)任意字符. 那么shell的工作方式是,它会对这些特殊字符进行预先处理, 然后再将处理的结果传给那个命令. 比如说,如果你的当前目录有file, file1, file2 三个文件, 那么当你执行cat

1001种玩法 | Python Prompt Toolkit:构建强大交互式命令行的 Python 工具库

Python Prompt Toolkit:构建强大交互式命令行的 Python 工具库 prompt_toolkit 是一个用于构建强大交互式命令行的 Python 工具库. 你是不是在找交互式的 Python shell 工具 ptpython 呢?我们把 ptpython 的源码转移到了一个独立的仓库.如此一来,我们确信  prompt_toolkit 库不会被其他 ptpython 东西"污染",并且 ptpython 也可以独立开发.现在必须用下面这个命令安装 ptpytho

python中如何使用shell命令, 及python 与shell 中的变量相互通信

1. python中使用shell命令有多种方法,我自己觉得比较好用的是用commands模块: import commands a,b = commands.getstatusoutput("ls -Al") a是退出状态(int类型), b是shell 命令的输出结果 python -> shell: 1.环境变量 import os  var=123或var='123'os.environ['var']=str(var)  #environ的键值必须是字符串   os.sy

命令行运行python项目文件,报错:ModuleNotFoundError: No module named 'xxxx' 解决办法

在pycharm中写好了自动化测试脚本,并能在pycharm中正常运行,由于要考虑到无人值守时能自动执行,执行时就需要脱离pycharm,直接能用命令执行.但是直接用命令执行用例文件:python3 D:\pycode\autotest_framework\case\run_case.py 结果报错,找不到模块 自动化项目的结构如下:用例run_case.py 和工具类utils下的工具 不在同一个文件夹下面.在脚本中需要导入包如: from utils.HTMLTestRunner impor