首页 > 代码库 > python学习

python学习

在项目的过程中需要使用svn hooks来做一些权限控制的操作,一开始使用shell来实现,在实现完成之后某些模块返回的json格式有所变化,需要修改shell的实现,shell对于json的解析很麻烦,线上的机器又不能引入别的库,于是考虑使用python来做这项工作,下面列出使用过的python语言点,纯记录作用,没有技术含量。。

python语言本身跟Java的区别:

  1. python用缩进来替代{/},所以在vim中开发python的时候需要配置下。
  2. python里不包括自增/自减运算符。但是有相应的+=、-=、*=运算符。
  3. python里的布尔运算符有and和or,Python还支持取反的布尔运算符not。

python与shell的交互:

shell获取python的返回值:

  在调用python的时候不加&:在python中使用sys模块(sys.exit(0)、sys.exit(1)),随后在shell中通过$?或者返回码。

  在调用python的时候加&:就不能通过$?捕获退出码,这样的话就麻烦点。一个方案就是:shell 用True循环  ,用ps aux看python是否存在,如果不存在了,代表python运行结束了,或者让python程序结束前产生一个文件,在shell里判断产生的文件在不在,在的话就是正确输出了,不在的话代表python失败了。

python调用shell:  

  import os
  1.os的system方法会创建子进程运行外部程序,方法只返回运行程序完毕后的退出状态。该方法比较适合于外部程序没有输出结果的情况。
  2.os的popen方法在需要得到外部程序的输出结果时,很有用。该方法返回一个类文件对象,调用该对象的read()或readlines()方法可以读取输出内容。 打开一个与command进程之间的管道。这个函数的返回值是一个文件对象,可以读或者写(由mode决定,mode默认是’r‘)。如果mode为’r‘,可以使用此函数的返回值调用read()来获取command命令的执行结果。
  3.commands模块的getoutput方法,这种方法同popend的区别在于popen返回的是一个类文件对象,而本方法将外部程序的输出结果当作字符串返回,很多情况下用起来要更方便些。
  4.subprocess模块,python新引入的模块,将要取代上面这些模块。

使用python发送http请求:

get请求:

  import urllib2
  url = ‘‘
  req=urllib2.Request(url)
  res_data=http://www.mamicode.com/urllib2.urlopen(req)
  res = res_data.read()

给python传参:

  import sys
  sys.argv[0] sys.argv[1]的这种方式来获取传给python的参数

使用python解析json:

  python自带的json模块支持对json直接的解析:

  import json

  s = json.loads(jsonStr)
  s.["name"]
  s.["type"]["name"]

python正则的使用:

  import re

  

 

python学习