python常用模块教程_python常用模块

python常用模块之一

time模块****

在Python中,通常有这几种方式来表示时间:

时间戳(timestamp) :         通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。

格式化的时间字符串         2018-05-20 19:45:04

元组(struct_time)   :         struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)

#!/usr/bin/env python#-*- coding: utf-8 -*-#@Time : 18-5-19 下午3:26#@Author : LK#@File : time_modular.py#@Software: PyCharm

importtime#时间戳 计算

print(time.time()) #从1970 年到现在有多少秒

#结构化时间#time.struct_time(tm_year=2018, tm_mon=5, tm_mday=19,#tm_hour=15, tm_min=32, tm_sec=0, tm_wday=5, tm_yday=139, tm_isdst=0)

print(time.localtime())

t=time.localtime()print(t.tm_year) #2018

#结构化时间 转换成时间戳 看图

print(time.mktime(time.localtime(123213)))#将结构化时间转换当成字符串时间 2018-05-19 15:40:38

print(time.strftime('%Y-%m-%d %X',time.localtime()))#将字符串时间装换成结构化时间#time.struct_time(tm_year=2018, tm_mon=5, tm_mday=19,#tm_hour=15, tm_min=40, tm_sec=38, tm_wday=5, tm_yday=139, tm_isdst=-1)

print(time.strptime('2018:05:19:15:40:38', "%Y:%m:%d:%X"))#Sat May 19 15:46:22 2018

print(time.asctime())print(time.ctime())importdatetime#2018-05-19 15:48:08.429398

print(datetime.datetime.now())

时间类型的相互转换

fdc82bc97f0de26d847581bd4cd3de1f.png    

6f4b163e79c5162a52806bd8148980ff.png

datetime模块****

可以用来做时间的计算

print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925

print(datetime.date.fromtimestamp(time.time()) ) #时间戳直接转成日期格式 2016-08-19

print(datetime.datetime.now() )print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天

print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天

print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时

print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分

random模块***

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#!/usr/bin/env python#-*- coding: utf-8 -*-#@Time : 18-5-19 下午3:51#@Author : LK#@File : 随机模块.py#@Software: PyCharm

importrandomprint(random.randint(0, 9)) #0到9随机产生一个数

print(random.random()) #0-1 float

print(random.randrange(1, 3)) #[1, 3)

print(chr(random.randint(65, 122))) #产生一个随机字母

print(random.choice([1, '23', [4, 5]])) #在这个列表里面随机选

print(random.sample([1, '23', [4, 5]], 2)) #选择两个随机组合

## 将a转换成ascii ord('a')#print(ord('a')) 翻过来chr(数字)

random

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#产生一个4位数字和字母的含有字母的验证码

res = ''

for i in range(1,5):

t= random.randint(0, 9)

s= chr(random.randint(65,90))

s2= chr(random.randint(97, 122))

res+=str(random.choice([t,s, s2]))print(res)

验证码

os模块****

os是一个提供和系统交互的模块

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#字符串拼接尽量不用+ 用join, 因为+所占内存是+前和后的

importos

os.getcwd()#获取当前工作目录,即当前python脚本工作的目录路径

print(os.getcwd())

os.chdir("dirname") #改变当前脚本工作目录;相当于shell下cd

os.curdir #返回当前目录: ('.')

os.pardir #获取当前目录的父目录字符串名:('..')

os.makedirs('dirname1/dirname2') ##可生成多层递归目录

os.removedirs('dirname1') ##若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

os.mkdir('dirname') #生成单级目录;相当于shell中mkdir dirname

os.rmdir('dirname') #删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname

os.listdir('dirname') #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印('..')

os.remove() #删除一个文件

os.rename("oldname","newname") #重命名文件/目录

os.stat('path/filename') #获取文件/目录信息

os.sep #输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"

os.linesep #输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"

os.pathsep #输出用于分割文件路径的字符串 win下为;,Linux下为:

os.name #输出字符串指示当前使用平台。win->'nt'; Linux->'posix'

os.system("bash command") #运行shell命令,直接显示

os.environ #获取系统环境变量

os.path.abspath(path) #返回path规范化的绝对路径

os.path.split(path) #将path分割成目录和文件名二元组返回

os.path.dirname(path) #返回path的目录。其实就是os.path.split(path)的第一个元素

os.path.basename(path) #返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素

os.path.exists(path) #如果path存在,返回True;如果path不存在,返回False

os.path.isabs(path) #如果path是绝对路径,返回True

os.path.join(path1[, path2[, ...]]) #将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

os.path.getatime(path) #返回path所指向的文件或者目录的最后存取时间

os.path.getmtime(path) #返回path所指向的文件或者目录的最后修改时间

os.path.getmtime(path) #返回path所指向的文件或者目录的最后修改时间

os方法

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

importos

path= os.path.abspath(__file__)

path2= os.path.dirname(__file__)

path3= os.path.dirname(os.path.abspath(__file__))

path4=os.path.split(path3)[0]

path5= os.path.join(path4, "test/ogf", "inog")print(path)print(path2)print(path3)print(path4)print(path5)

结果:/home/lk/Desktop/py_project/chapt16/bin/python /home/lk/Desktop/pro_py/模块/model/os_modular.py/home/lk/Desktop/pro_py/模块/model/os_modular.py/home/lk/Desktop/pro_py/模块/model/home/lk/Desktop/pro_py/模块/model/home/lk/Desktop/pro_py/模块/home/lk/Desktop/pro_py/模块/test/ogf/inog

简单应用

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#在win下会把c:/windows\\system32\\ -->c:\\windows\\system32\\

os.path.normcase('c:/windows\\system32\\')#'c:\\windows\\system32\\'

#规范化路径,如..和 /

os.path.normpath('c://windows\\System32\\../Temp/')#'c:\\windows\\Temp'

#在linux下会---->/ Users / jieli / test1

a = '/Users/jieli/test1/\\\a1/\\\\aa.py/../..'

print(os.path.normpath(a))#/ Users / jieli / test1

路径规范化

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

路径处理

sys模块****

sys.argv 命令行参数List,第一个元素是程序本身路径

sys.exit(n) 退出程序,正常退出时exit(0)

sys.version 获取Python解释程序的版本信息

sys.maxint 最大的Int值

sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值

sys.platform 返回操作系统平台名称

关于argv函数

直接看效果图

8b5c769b3d2445f8da5a7592c8889a9f.png

常用在 登录,就像mysql的登录 mysql -u root -p .....  会把参数自动传给argv然后 在对argv操作,就不用让用户一步一步的输入了

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#进度条,

importtimefor i in range(80):

sys.stdout.write('#') #print的底层实现就是利用的这个

time.sleep(0.1)

sys.stdout.flush()#

#sys.stdout.write('#') 向屏幕输出内容, 但是要等到缓存完成后,一次性打印#sys.stdout.flush() 刷新缓存, 就是如果有内容就输出

low版进度条

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#=========知识储备==========#进度条的效果

[#]

[## ]

[### ]

[#### ]

#指定宽度

print('[%-15s]' %'#')print('[%-15s]' %'##')print('[%-15s]' %'###')print('[%-15s]' %'####')#打印%

print('%s%%' %(100)) #第二个%号代表取消第一个%的特殊意义

#可传参来控制宽度

print('[%%-%ds]' %50) #[%-50s]

print(('[%%-%ds]' %50) %'#')print(('[%%-%ds]' %50) %'##')print(('[%%-%ds]' %50) %'###')#=========实现打印进度条函数==========

importsysimporttimedef progress(percent,width=50):if percent >= 1:

percent=1show_str=('[%%-%ds]' %width) %(int(width*percent)*'#')print('\r%s %d%%' %(show_str,int(100*percent)),file=sys.stdout,flush=True,end='')#=========应用==========

data_size=1025recv_size=0while recv_size

time.sleep(0.1) #模拟数据的传输延迟

recv_size+=1024 #每次收1024

percent=recv_size/data_size #接收的比例

progress(percent,width=70) #进度条的宽度70

进度条

json和pickle模块****

json和pickle类似,就连用法都很像,就是将数据类型转换成字符串存放起来,存到文件中

pickle的类型多一点,但是他存的格式是byte类型的,所以json比较常用

#dump/dumps是将数据转换成字符串,load/loads是将字符串转成数据类型

#pickle 和json类似,方法都一样, 就是pickle保存的数据是不是字符串而知字节, 所以读文件是用'rb', 写文件用'wb'## pickle 支持的类型更多, 但是json更好用

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#json 在其他语言也能用

importjson

dic= {'name' : 'luck'} #用json处理, --> 单引号变成双引号, 然后在最外面在加上""

data =json.dumps(dic)#data是一个字符串类型, json的 就是说是{"name": "luck"},双引号, 这样的话其他语言也可以使用

print(data)print(type(data)) #str

#dic = {'name' : 'luck'} ---> {"name": "luck"} ---> str({"name": "luck"})#i = 8 ---> str(8)#s = 'hello' --->"hello" --->str("hello")#l = [11,22] --->"[11,22]"

json基本使用

#普通的向文件中读写数据时:#如果向文件中存放一个字典, 将下面的字典放到文件中去

dic = {'name' : 'luck'}

str_d=str(dic)#写文件

f_write = open('dic.txt', 'w')

f_write.write(str_d)

f_write.close()#读文件

f_read = open('dic.txt', 'r')

data= f_read.read() #z字符串 用eval转换成字典, 列表, 元祖, 但是不能转成类, 函数等

data =eval(data)print(data, type(data)) #{'name': 'luck'}

f_read.close()

json读取文件,写文件,

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#普通的向文件中读写数据时:#如果向文件中存放一个字典, 将下面的字典放到文件中去

dic = {'name' : 'luck'}

str_d=str(dic)#写文件

f_write = open('dic.txt', 'w')

f_write.write(str_d)

f_write.close()#读文件

f_read = open('dic.txt', 'r')

data= f_read.read() #z字符串 用eval转换成字典, 列表, 元祖, 但是不能转成类, 函数等

data =eval(data)print(data, type(data)) #{'name': 'luck'}

f_read.close()#思路就是: 现将数据转换成字符串,然后在写入文件,读的时候就是把字符串读出来,然后转换成一定的格式#dumps就相当于将数据转换成字符串, loads相当于将字符串读出来并转换成一定的格式#利用json实现

importjson

dic= {'name': 'lucky'}

f_write= open('new.txt','w') #只需要将要写的数据传个dumps,返回一个字符串类型的数据

data = json.dumps(dic) #json.dump(dic, f_write)

f_write.write(data)

f_write.close()#读数据

f_read = open('new.txt', 'r')

data= json.loads(f_read.read()) #json.load(f_read)

print(data)

f_read.close()

json应用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值