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\res')  #创建目录

os.makedirs(r'd:\dddd\a\b\c')   #创建多层目录

os.rmdir(r'd:\dddd\a\b\c')    #删除目录

os.removedirs(r'd:\dddd\a\b\c') #目录为空则删除,并递归到上一级目录,若也为空则删除。依此类推。

 

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 模块实现。

posted @ 2017-09-13 15:25  linuxws  阅读(223)  评论(0编辑  收藏  举报