python脚本-输入输出-shell调用


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脚本-输入输出-shell调用_第1张图片
所以录入的内容被读取为字符串。
Python脚本文件的输入参数
l 大多数时候,我们直接使用编好的脚本文件。
l 希望在运行脚本文件的时候,可以传入参数。
l 此时,需要在代码里用到sys.argv
l sys.argv是一个列表,第一个参数是脚本的名称。
l 可以将python脚本文件标记为可执行文件。
l 简化脚本的调用方式。
python脚本-输入输出-shell调用_第2张图片
python脚本-输入输出-shell调用_第3张图片
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函数定义。
python脚本-输入输出-shell调用_第4张图片
使用格式化字符串来输出更易读的内容。
python脚本-输入输出-shell调用_第5张图片

你可能感兴趣的:(Python,python)