zoukankan      html  css  js  c++  java
  • python 模块

    待更新

    1、Time

    三种表示时间的方式:时间戳、、

    1、时间戳

    print(time.time())           #1498548307.2518802

    2、时间字符串

    aa=time.strftime("%Y-%m-%d %X")    # 

    print(aa)

    3、结构化时间

    time.localtime() #时间戳可以做参数。

    1、提取结构化时间的元素。

    print(time.localtime())   #时间对象,对象都可以通过“对象.方法”的方式进行调用
    s=time.localtime()
    print(s.tm_year)       #查看年份

    5、结构化时间==》时间戳。

    print(time.mktime(time.localtime()))      

    6、字符串时间==》结构化时间

    将1990:03:12转换成结构化时间:

    print(time.strptime('1990:03:12','%Y:%m:%d'))

    作业:将2013-07-13加3天

    import time
    tim_str='2013-07-13'
    aa=time.strptime(tim_str,'%Y-%m-%d')
    bb=time.mktime(aa)
    cc=bb+(3600*24*3)
    dd=time.localtime(cc)
    ee=time.strftime('%Y-%m-%d',dd)
    print(ee)

    4、世界标准时间。

    print(time.gmtime())    

    2、random

    random.random()      # 0到1之间的小数
    
    random.uniform(1,3)            #大于1小于3的小数
    
    random.randint(1,5)       # 大于等于1且小于等于5之间的整数
    
    random.randrange(1,3)   # 大于等于1且小于3之间的整数
    
    random.choice([1,'23',[4,5]])      #取其一 #1或者23或者[4,5]
    
    random.sample([1,'23',[4,5]],2)    #取多项 #列表元素任意2个组合
    
    item=[1,3,5,7,9]
    
    random.shuffle(item) # 打乱次序
    
    print(item)

    验证码

    import random
    def valdate_code():
        ret=''
        for i in range(5):  #循环取5次值
            num=random.randint(0,9) #取数字
            alfa=chr(random.randint(97,122))    #取小写字母(chr(97))
            alfa2=chr(random.randint(65,90))    #取大写字母
            s=random.choice([str(num),alfa,alfa2])  #从(数字,小写,大写字母)中取任意类型数据
            ret=ret+s
        return ret
    print(valdate_code())

    hashlib 

    摘要算法,避免数据被篡改。摘要函数是单向函数,反推困难。安全性高。
    常见的摘要算法:MD5、SHA1,调用方法一样
    如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的:
    import hashlib
    md5_obj=hashlib.md5(b'salt')   #获取摘要的方式;加盐
    md5_obj.update(b"hello")
    md5_obj.update(b"world") #分块多次调用
    print(md5_obj.hexdigest())     #返回摘要

    3、os

    print(os.getcwd())  #查看当前目录(pwd
    
    os.chdir(r'D:') #切换目录:cd
    
    f=open('text.txt','w')
    
    os.mkdir(r'd:dddd
    es')  #创建目录
    
    os.makedirs(r'd:ddddac')   #创建多层目录
    
    os.rmdir(r'd:ddddac')    #删除目录
    
    os.removedirs(r'd:ddddac') #目录为空则删除,并递归到上一级目录,若也为空则删除。依此类推。

    os.walk

    这个函数会遍历指定目录下的所有目录和文件。输出的格式是:目录,子目录,子文件

    os.path.abspath(path)   #返回绝对路径
    
    os.path.basename(path)   #返回文件名
    
    os.path.commonprefix(list) #返回list(多个路径)中,所有path共有的最长的路径。
    
    os.path.dirname(path)   #返回文件路径
    
    os.path.exists(path)    #路径存在则返回True,路径损坏返回False
    
    os.path.lexists      #路径存在则返回True,路径损坏也返回True
    
    os.path.expanduser(path)    #把path中包含的"~"和"~user"转换成用户目录
    
    os.path.expandvars(path)    #根据环境变量的值替换path中包含的”$name”和”${name}”
    
    os.path.getatime(path)      #返回最后一次进入此path的时间。
    
    os.path.getmtime(path)      #返回在此path下最后一次修改的时间。
    
    os.path.getctime(path)      #返回path的大小
    
    os.path.getsize(path)      #返回文件大小,如果文件不存在就返回错误
    
    os.path.isabs(path)        #判断是否为绝对路径
    
    os.path.isfile(path)         #判断路径是否为文件
    
    os.path.isdir(path)        #判断路径是否为目录
    
    os.path.islink(path)       #判断路径是否为链接
    
    os.path.ismount(path)      #判断路径是否为挂载点()
    
    os.path.join(path1[, path2[, ...]])  #把目录和文件名合成一个路径
    
    os.path.normcase(path)       #转换path的大小写和斜杠
    
    os.path.normpath(path)       #规范path字符串形式
    
    os.path.realpath(path)      #返回path的真实路径
    
    os.path.relpath(path[, start])  #从start开始计算相对路径
    
    os.path.samefile(path1, path2)  #判断目录或文件是否相同
    
    os.path.sameopenfile(fp1, fp2)  #判断fp1和fp2是否指向同一文件
    
    os.path.samestat(stat1, stat2)  #判断stat tuple stat1和stat2是否指向同一个文件
    
    os.path.split(path)         #把路径分割成dirname和basename,返回一个元组
    
    os.path.splitdrive(path)       #一般用在windows下,返回驱动器名和路径组成的元组
    
    os.path.splitext(path)        #分割路径,返回路径名和文件扩展名的元组
    
    os.path.splitunc(path)        #把路径分割为加载点与文件
    
    os.path.walk(path, visit, arg)   #遍历path,进入每个目录都调用visit函数,visit函数必须有
    
    3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有文件名,args则为walk的第三个参数
    
    os.path.supports_unicode_filenames  #设置是否支持unicode路径名

    json模块

    序列化:

    import json
    dic = {'name':'wu','age':32}
    f=open('dump.txt','w')
    data=json.dump(dic,f)   #直接给一个序列化对象和句柄就可以了。

    反序列化

    f=open(‘json_data.txt’,’r’)

    dic=json.load(f)

    subprocess

    import subprocess #调用系统命令
    s=subprocess.Popen('dir',shell=True) #调用subprocess.Popen时开了一个进程,所以'ending'先打印.
    s.wait() #s这个子进程执行完了再往下执行。
    print('ending')

    pickle模块

    pickle仅仅用于python的数据类型,优点是能支持python的所有数据类型。

    缺点:只能在两个python程序之间进行交换。

    Pickle序列化后的数据是二进制

     

    序列化:

    import pickle
    dic={'name':'alvin','age':23,'sex':'male'}
    f=open('pickle.txt','wb')
    pickle.dump(dic,f)

    反序列化
    import pickle
    f=open('pickle.txt','rb')
    data=pickle.load(f)
    print(type(data),data)

    shelve模块

    configparser模块

    import configparser
    cfp = configparser.ConfigParser() #创建一个对象(一个空字典)
    cfp['DEFAULT']={'ServerAliveInterval':45,'Compression':'YES','CompressionLevel':9,'ForwardX11':'YES'} # 创建’DEFAULT’字段的字典。
    cfp['bitbucket.org']={'USER':'hg'}
    cfp['topsecret.server.com']={'Port':5000123,'ForwardX11':'no'}
    with open('cfp.ini','w') as f:  #写到文件里
        cfp.write(f)

    import configparser
    
    confi = configparser.ConfigParser() #实例化
    
    confi.add_section('yuan')    #添加字段
    
    confi.set('yuan','int','ls') #在字段中添加int = ls
    
    confi.set('yuan', 'baz', 'fun')
    
    confi.set('yuan', 'bar', 'Python')
    
    confi.write(open('cfp.ini','w+'))   #写到文件中

    操作配置文件。

    import configparser
    cfp=configparser.ConfigParser()
    cfp.read('cfp.ini')
    print(cfp.sections()) #查字段的名字。['bitbucket.org', 'topsecret.server.com']
    # DEFAULT是关键字(默认),下面的信息都是共有的
    print('topsecret.server.com' in cfp) #判断这个字段是否在这个配置文件里。
    print(cfp['bitbucket.org']['user'])#取user的值
    print(cfp.items('bitbucket.org')) #取键值对
    print(cfp.options('bitbucket.org')) #取key

    如果有一个符合这个格式的配置文件,可以用这个模块直接操作这个配置文件。

     

    optparser添加参数

    import optparse
    
    class ArgvHandler():
    
        def __init__(self):
    
            self.op = optparse.OptionParser()
    
            #定义参数:
    
            self.op.add_option('-s','--server',dest='server') #‘server’作为key,-s后面的值作为values。组成一个字典形式,但是不是字典。
    
            self.op.add_option('-P','--port',dest='port')
    
            #参数解析:
    
            options,args=self.op.parse_args() #没有绑定的信息都放到args变量里去,绑定的信息都放在options里去。
    
            print(type(options))
    
            print(options)
    
            print(options.server) #options并不是字典,不能options[‘key‘]的形式取值。server被定义成了属性
    
            print(args)

    re模块

    元字符:. ^ $ * + ? { } [ ] | ( )

    在Python中正则表达式通过 re 模块实现。

  • 相关阅读:
    【高级内部资料】.NET数据批量写入性能分析 第二篇
    负载均衡原理与实践详解 第五篇 负载均衡时数据包流程详解
    负载均衡原理与实践详解 第三篇 服务器负载均衡的基本概念网络基础
    如何提高Linq查询的性能(上)
    【全面解析DeepZoom 之二】Silverlight2及Deep Zoom环境的搭建
    关于让WPF软件界面支持全球化和本地化
    在WPF中自定义控件(3) CustomControl (上)
    【全面解析DeepZoom 之一】酷!Deep Zoom
    谈谈我理解的WPF团队模型——在UI Designer与Developer之间
    [WPF疑难]在WPF中显示动态GIF
  • 原文地址:https://www.cnblogs.com/linuxws/p/7515149.html
Copyright © 2011-2022 走看看