代码改变世界

初学Python—常用模块

2017-04-16 22:06  Eilleen-G  阅读(201)  评论(0编辑  收藏  举报

1 随机数 验证码

import random
from cPickle import dumps, load
print random.random()
print random.randint(1,5)#包括1 和5
print random.randrange(1,5)#不包括5
#######验证码############3
for i in range(6):
    if i==random.randint(1,10):
        print random.randint(1,10)
    else:
        temp=random.randint(65,90)
        print chr(temp)#一列显示
        
 
code=[]     
for i in range(6):
    if i==random.randint(1,10):
        code.append(str(random.randint(1,10)))
    else:
       code.append(chr(random.randint(65,90)))        
print''.join(code)#格式化比+=效率高    print code  GVGJLU
        

 2 MD5加密****************

import hashlib

hash=hashlib.md5()

hash.update('admin')
print hash.hexdigest()#21232f297a57a5a743894a0e4a801fc3存到数据库里 密码就写这个
print hash.digest()#长度不一样

3 序列化 pickle json 

######序列化和json()(序列化 Python与Python之间传输数据)

###把一个对象(列表,字典,yield等),通过Python特有机制序列化成字符串,序列化后还可以进行反序列化,以特殊2进制值加密的过程
import pickle#(Python  能序列化字典 链表 所有  多   不可读)
#序列化
li=['Eilleen','11','22','Giulio']
dumpsed=pickle.dumps(li)
print dumpsed
print type(dumpsed)#<type 'str'>
#反序列化
loadsed=pickle.loads(dumpsed)
print loadsed
print type(loadsed)#<type 'list'>

#####3把序列化后的字符串放入文件中去掉‘s’
pickle.dump(li,open('D:/temp.pk','w'))
result=pickle.load(open('D:/temp.pk','r'))
print result




import json#(所有语言,能序列化字典 等一些常规化  少,可读)

li=['qwer','11','22','asdf']
dumpsed=json.dumps(li)
print dumpsed
print type(dumpsed)#<type 'str'>
#反序列化
loadsed=json.loads(dumpsed)
print loadsed
print type(loadsed)#<type 'list'>

#####3把序列化后的字符串放入文件中去掉‘s’
json.dump(li,open('D:/temp.pk','w'))
result=json.load(open('D:/temp.pk','r'))
print result#[u'qwer', u'11', u'22', u'asdf']

 4 re(正则表达式)

########re########正则表达式
import re

result1=re.match('\d+','123jedwkjcfw29832974fnfckjcbjb')
print result1
print result1.group()#开头有就显示。123
result2=re.search('\d+','123jedwkjcfw29832974fnfckjcbjb')
print result2
print result2.group()#整个找,找到就停123

###################################但是都找到一组,下一个不匹配就停止
result1=re.match('\d+','jedwkjcfw29832974fnfckjcb,jb')
if result1:###(如果开头没有匹配上就显示None,就不是一个对象没有group)
    print result1.group()#开头有就显示。
else:
    print 'nothing'####nothing
        
result2=re.search('\d+','jedwkjcfw29832974fnfckjcb,jb')
print result2
print result2.group()#整个找,找到就停29832974
####################################

result3=re.findall('\d+','123jedwkjc3r43fw29832974fnfc333kjcb467jb')
print result3#['123', '3', '43', '29832974', '333', '467']
#########################################

com=re.compile('\d+')#只编译一次,
print com.findall('jcodchihdkk1111hcihdvdk89898')#可以匹配N次
print com.findall('123224435nfeknvn0999979786')
print com.findall('44697dfhjdbvszkvhk,3596846')
print com.findall('ncakjefhk3865925jfsdvdjhkvjebhv')

#####################$$#######################
result4=re.search('(\d+)jhfhfj(\d+)','ghgfh1242jhfhfj4657dvzjbv')
result5=re.search('(\d+)\w*(\d+)','ghgfh1242jhfhfj4657dvzjbv')
print result4.group()#1242jhfhfj4657
print result4.groups()#('1242', '4657')  只找括号里面的东西
print result5.group()#1242jhfhfj4657
print result5.groups()#('1242', '7')
###字符\d \w \t .除了回车意外的所有字符
###次数*(大于等于0)   +(大于等于1)?(0或者1) {m}次数{m,n}范围都包括

 5 time

import time 
from test.test_datetime import DAY
from ssl import cert_time_to_seconds
#1.时间戳 1970年1月1日之后的秒
#2 元组,包含了 年,月,日星期等 ,结构
#3,格式化的字符串  2014-11-11 11:11

print time.time()
print time.mktime(time.localtime())#结构化转时间戳

print time.gmtime()#可加时间戳参数
print time.localtime()#可加时间戳参数
print time.strptime('2017-4-19', '%Y-%m-%d')




print time.strftime('%Y-%m-%d')##########常用


print time.strftime('%Y-%m-%d',time.localtime())#2017-04-19
print time.asctime()#Wed Apr 19 22:08:15 2017
print time.asctime(time.localtime())
print time.ctime(time.time())

  

'''
注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import datetime导入的才是datetime这个类。

如果仅导入import datetime,则必须引用全名datetime.datetime。

datetime.now()返回当前日期和时间,其类型是datetime。
'''
import datetime
datetime.date#表示日期的类,常用的属性有year,month,DAY
datetime.time#表示时间的类,常用的属性有hour minute,cert_time_to_seconds
print datetime.datetime.now()-datetime.timedelta(days=5,hours=5)#表示时间间隔,即两个时间点的长度。
print datetime.datetime.now()#表示时期时间获取当前的时间和日2017-04-20 10:24:44.633000
now=datetime.datetime.now()
print(now.strftime('%a, %b %d %H:%M'))#Thu, Apr 20 10:24#datetime转成str
print datetime.datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')#str转成datetime
datetime

 6  sys

import sys
sys.argv #命令行参数Lst,第一个元素是程序本身路径
sys.exit(0)#退出程序正常退出是exit(0)
sys.version#获取pyth解释程序的版本信息
sys.maxint #最大的Int值
sys.maxunicode#最大的unicode值
sys.path##返回模块的搜索路经 初始化时使用Pythonpath
sys.platform#返回操作系统平台名称
sys.stdout.write('please:')
val=sys.stdin.readline()[:-1]
print val

7 os

 

import os
os.getcwd()#获取当前的工作目录
os.chdir('dirname')#改变当前脚本工作目录
os.curdir#返回当前目录:('.')
os.pardir#获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')#可生成多层递归目录
os.removedirs('dirname1')###若目录为空则删除,并递归到上一层
os.mkdir('dirname')#生成单级目录
os.rmdir('dirname')#删除单级空目录。若目录不为空则无法删除
os.listdir('dirname')#列出指定目录下的所有文件和子目录
os.remove()#删除一个文件
os.rename("oldname","newname")#重命名文件目录
os.star('path/filename')#获取文件目录信息
os.sep#输出操作系统特点的路径分隔符,win下为“\\”
os.linesep#输出当前平台使用的行终止符,win下为“\t\n”
os.pathsep#输出用于分割文件路径的字符串
os.name#输出字符串指示当前使用平台
os.system("bash command")#允许shell命令,直接显示
os.environ#返回path规范化的绝对路径
os.path.split(path)#将path分割成目录和文件名二元组返回
os.path.dirname(p)#返回path的目录
os.path.basename(path)#返回path最后的的文件名
os.path.exists(path)##如果path是绝对路径 则返回true
os.path.isfile(path)#如果path是一个存在的文件则返回true
os.path.isdir()#如果path是一个存在的目录则返回true
os.path.join(path1[,path2[, ...]])#将多个路径组合后返回
os.path.getatime(path)#返回path所指向的文件或目录的最后存取
os.path.getmtime(path)#返回path所指向的文件或目录的最后修改