shell 调用python
调用python脚本
python main.py
调用python模块
举个简单的例子,我们想要对curl获取的结果进行json格式化。
假设安装了jq,可以使用jq命令:
curl -s "http://rap2api.taobao.org/app/mock/241888/example/1578301745121" | jq
假设没有安装jq,那我们可以使用python的 json.tool 模块:
curl -s "http://rap2api.taobao.org/app/mock/241888/example/1578301745121" | python -m json.tool
调用python函数
test.py 内容
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#scriptname:test.py
def helloworld():
return "helloworld"
def echo():
print helloworld()
def get_user():
return "haojin",100,"beijing"
shell中调用 test.py 中的方法
python -c 'import test;print test.helloworld()'
python -c 'import test;test.echo()'
res=$(python -c 'import test;print test.get_user()')
name=$(echo $res | cut -d' ' -f1 | sed 's/,$//' | sed 's/^(//' | sed "s/\'//g")
score=$(echo $res | cut -d' ' -f2 | sed 's/,$//')
loc=$(echo $res | cut -d' ' -f3 | sed 's/)$//' | sed "s/\'//g")
python调用shell
调用shell命令
import os
val = os.system('ls -al')
print val
调用shell脚本
shell
#!/bin/bash
echo "hello"
py
import os
val = os.system('sh main.sh')
print val
获取shell指令的结果
import os
res = os.popen('echo "hello"')
print res.read()
res.close()
高级例子:获取curl命令的返回结果,转化成dict。
main.sh
#!/bin/bash
curl -s "http://rap2api.taobao.org/app/mock/241888/example/1578301745121"
python 调用 main.sh
import os
import json
res = os.popen('sh main.sh')
data = json.loads(res.read())
res.close()
print data['number']
print data['string']
print data['array'][0]['foo']
- 在一个py脚本script中自定义函数func
调用
from script import func
- pip install python pkg
pip install script
from script import func
- conda install python pkg
conda install script
from script import func
# cigar_shell.py
import sys
from cigar import Cigar
cigar_string = sys.argv[1]
c = Cigar(cigar_string)
c_len=len(c)
print(c_len)
python cigar_shell.py $i >> txt
一、必备知识回顾和补充
二、输入和参数
三、输出和格式化
一、必备知识回顾和补充
Hello world回顾
1、输出文本,使用print函数输出文本。
2、让用户输入名字,然后输出带名字的问候语。使用input函数获取用户的输入,使用变量保存输入值。
l Input函数获取运行环境中用户的输入,程序挂起等待输入完成。
l Print函数提供了往标准输入打印指定内容。
l 读取文件的内置函数是open,可读取文件内容供处理,也提供了写入文件
的方法。
sys模块简介
l sys模块是python 标准库内置的,它提供了一些变量和函数。
l python脚本执行时可以传入参数。
l Python[-bBdEhiIOqsSuvVWx?][-c command -m module-na
me script -][args]。
l 代码里获取参数需要通过sys模块实现。
Open 函数简介
l Open 函数打开file并返回对应的文件对象
l 默认返回读取的文本内容
l 可指定mode用来写入文件而作为输出
二、输入和参数
Input获取输入
l 函数定义:input([prompt])
l Prompt为可选参数,如果指定了prompt运行时将它输出到标准输出,
比如终端Shell.
l 然后程序暂停等待用户的键盘输入,按下回车键继续执行。
所以录入的内容被读取为字符串。
Python脚本文件的输入参数
l 大多数时候,我们直接使用编好的脚本文件。
l 希望在运行脚本文件的时候,可以传入参数。
l 此时,需要在代码里用到sys.argv
。
l sys.argv是一个列表,第一个参数是脚本的名称。
l 可以将python脚本文件标记为可执行文件。
l 简化脚本的调用方式。
shell
k=1.5
yesterday='${zdt.addDay(-1).format("yyyyMMdd")}'
python2.7 $file_path/$python_name $k $yesterday
Python
import sys
k = float(sys.argv[1])
yesterday = sys.argv[2]
三、输出和格式化
l 输出内容一般提供给人们阅读使用。
l python提供了格式化输出选项。
l Print函数
定义。
使用格式化字符串来输出更易读的内容。