zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    【ARM-Linux开发】Linux下查看机器的CPU负载
    【ARM-Linux开发】Linux下查看机器的CPU负载
    【ARM-Linux开发】ARM7 ARM9 ARM Cortex M3 M4 有什么区别
    【ARM-Linux开发】ARM7 ARM9 ARM Cortex M3 M4 有什么区别
    【miscellaneous】使用Google语音识别引擎(Google Speech API)[3月5日修改]
    【miscellaneous】使用Google语音识别引擎(Google Speech API)[3月5日修改]
    【miscellaneous】语音识别工具箱综述和产品介绍
    【miscellaneous】语音识别工具箱综述和产品介绍
    【FFMPEG】【ARM-Linux开发】 ffmpeg 静态库使用,undefined reference错误
    【CDN】海外免费加速CDN:Incapsula,CloudFare
  • 原文地址:https://www.cnblogs.com/jkklearn/p/7422690.html
Copyright © 2011-2022 走看看