python常用模块

 【os模块 】

当前路径下的所有目录

[x for x in os.listdir(".") if os.path.isdir(x)]

【json】

import json
dic = {"name":"jinkang","age":23}
d = json.dumps(dic)
print type(dic)  # dict
print type(d)  # str

print dic["name"] #jinkang
print json.loads(d)["name"] jinkang

【logging 模块】

import logging

logging.basicConfig(level=logging.DEBUG,
                format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                datefmt='%a, %d %b %Y %H:%M:%S',
                filename='myapp.log',  #指定日志文件名
                filemode='w')   #指定日志的打开方式, ‘w’或‘a’ 覆盖  追加

logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')

myapp.log 中的内容

Mon, 28 Aug 2017 11:36:48 hello.py[line:11] DEBUG This is debug message
Mon, 28 Aug 2017 11:36:48 hello.py[line:12] INFO This is info message
Mon, 28 Aug 2017 11:36:48 hello.py[line:13] WARNING This is warning message

将日志同时输出到文件和屏幕

console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)

 time 

时间的格式化
time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))

zipfile 模块

import zipfile
f = zipfile.ZipFile('pythontest.zip','r')
for x in f.namelist(): //获取压缩文件的文件列表
    print x         #输出文件名称
    print f.read(x) #输出文件内容

import zipfile
f = zipfile.ZipFile('pythontest.zip','r')
for x in f.namelist():
with open(x,'w') as file:
file.write(f.read(x))  

#解压一个zip文件

requests

import os
import requests
import json

val = {
  "name": "adminw",
  "passwd": "123456"
}
r = requests.get("http://127.0.0.1:3999/test",data=val,timeout=2)
# res = json.loads(r.text)
# for attr in res:
#     print attr,res[attr]
print r.text


val = {
"name": "adminw",
"passwd": "123456"
}
try:
r = requests.get("http://127.0.0.1:3999/test",data=val,timeout=2)
print t.text
except requests.exceptions.ReadTimeout:
print "errr"
 
所有的请求错误都来自
requests.exceptions.RequestException

 getpass 模块

提供了可移植的密码输入,提供了两个函数   getpass.getpass()      getpass.getuser()

import getpass
pd = "password"
p = getpass.getpass("请输入密码,然后按回车键")
if p == pd:
    print "密码正确"
else:
    print "密码错误"

print getpass.getuser() 返回用户的登录名  //Administrator  //root

 系统性能信息模块  psutil 

 IP 地址处理模块 IPy

 DNS处理模块 dnspython

python 文件的引用

想引入../pck/test.py 里的函数

import imp
test=imp.load_source('test','../pck/test.py')
import  test

a =  test.add(4,6) 
print a

如果test.py 在当前目录下,可以直接这样使用

import  test

a =  test.add(4,6) 
print a
lib.py 内容如下
def make(*args):
    for i in args:
        print i
test.py 内容如下
import lib
lib.make(4,6,7)
from lib import make
make(4,6,7)
test.py 和 lib.py 文件在同级目录下
 
还可以使用别名
import lib as haha
haha.make(4,6,7)
from lib import make as haha
haha(4,6,7)
想要导入lib 中所有函数
from lib import *

 读取解析修改配置文件模块 configobj 

[root@jinkangldap ~]# cat test.ini
[server]
name = kkk
host = 127.0.0.1
[root@jinkangldap ~]# python w.py
kkk
ppp
[root@jinkangldap ~]# cat w.py
from configobj import ConfigObj
def get_config(configfile,section,option):
config=ConfigObj(configfile)
return config[section][option]

def update_config(configfile,section,option,val):
config=ConfigObj(configfile)
config[section][option]=val
config.write()
return

name=get_config("test.ini","server","name")
print name
update_config("test.ini","server","name","ppp")
name=get_config("test.ini","server","name")
print name

 shutil  文件操作模块  copy copytree  move 等操作

import shutil
import os

cut_dir = os.getcwd()
files = os.listdir(cut_dir) 
filename1 = os.path.join(cut_dir,"1.txt")
filename2 = os.path.join(cut_dir,"2.txt")

shutil.copy(filename1, filename2)

 关于脚本参数 常用的模块 

 一个是常用的sys.argv了 参数较少时可以用用

import sys
for i in  sys.argv[1:]:
    print i

一个是getopt模块,感觉不咋好用

import sys,getopt

def main(argv):
    inputfile=""
    outputfile=""
    try:
        opts,args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
        print opts
        print args
    except getopt.GetoptError:
        print "python xxx.pt -i inputfilename -o outfilname"
    for opt,arg in opts:
        if opt == "-h":
            print "python xxx.pt -i inputfilename -o outfilname"
        elif opt in ("-i","--ifile"):
            inputfile = arg
        elif opt in ("-o","--ofile"):
            outputfile = arg
        else:
            print "python xxx.pt -i inputfilename -o outfilname"
    print "输入文件 %s" %(inputfile)
    print "输出文件 %s" %(inputfile)

if __name__ == '__main__':
    main(sys.argv[1:])

$ python test.py -i inputfile -o  outpufile
$ python test.py --ifile inputfile --ofile  outpufile

还有一个是 argparse 模块,个人觉得比较好用些

import argparse

def main():
    parser = argparse.ArgumentParser(description="Demo of argparse")
    parser.add_argument('-n','--name', default='Li',help="please enter your name")
    parser.add_argument('-y','--year', default='20', help="please enter your age")
    args = parser.parse_args()
    print(args)
    name = args.name
    year = args.year
    print('Hello {}  {}'.format(name,year))
    print "hello %s your age is %d" %(name,int(year))

if __name__ == '__main__':
    main()

python test.py -n kk -y 18

python test.py --name  kk --year 18

 array 数组模块,与python普通list不同,array数组内的元素必须是同类型的。

from array import *

array1 = array('i', [10,20,30,40,50])

for x in array1:
 print(x)

lxml 用来解析html元素

# XPath常用规则
# /                            从当前节点选取直接子节点
# //                           从当前节点选取子孙节点
# .                            选取当前节点
# ..                           选取当前节点的父节点
# @                          选取属性
# *                           通配符,选择所有元素节点与元素名
# @*                        选取所有属性
# [@attrib]               选取具有给定属性的所有元素
# [@attrib='value']    选取给定属性具有给定值的所有元素
# [tag]                     选取所有具有指定元素的直接子节点
# [tag='text']            选取所有具有指定元素并且文本内容是text节点

<li><a href="http://baijiahao.baidu.com/s?id=1655073048846026024" target="_blank" mon="a=9">2020年游戏行业有哪些新趋势</a></li>

from lxml import html
from lxml import etree

page = requests.get("http://www.nipic.com/")

或者1 tree = html.fromstring(page.content)

或者2 tree = etree.HTML(page.content)

要想获取  2020年游戏行业有哪些新趋势  这个内容

image_src = tree.xpath("//li/a")
for i in image_src:
print i.text

或者

image_src = tree.xpath("//li/a/text()")
for i in image_src:
print i

要想获取http://baijiahao.baidu.com/s?id=1655073048846026024

image_src = tree.xpath("//li/a/@href")
for i in image_src:
print i

包含关系 input标签中 包含 name="tn" 

<input type="hidden" name="tn" id="tn" value="news"/>

image_src = tree.xpath("//input[contains(@name,'rn')]")
for i in image_src:
print i

原文地址:https://www.cnblogs.com/jkklearn/p/7422690.html