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

    一.time和datetime

    1.time

     1 print(time.time())  # 时间戳
     2 
     3 print(time.localtime())  # 结构化时间(东八区)
     4 print(time.localtime().tm_year)  # 得到年份
     5 print(time.gmtime())  # 结构化时间(0区)
     6 
     7 print(time.strftime("%Y-%m-%d %X"))  # 格式化时间字符串
     8 
     9 
    10 # 结果
    11 1552100964.4544
    12 time.struct_time(tm_year=2019, tm_mon=3, tm_mday=9, tm_hour=11, tm_min=9, tm_sec=24, tm_wday=5, tm_yday=68, tm_isdst=0)
    13 2019
    14 time.struct_time(tm_year=2019, tm_mon=3, tm_mday=9, tm_hour=3, tm_min=9, tm_sec=24, tm_wday=5, tm_yday=68, tm_isdst=0)
    15 2019-03-09 11:09:24

    三种形式转化

     1 # ----------按图1转换时间
     2 # localtime([secs])
     3 # 将一个时间戳转换为当前时区的struct_time(结构化时间)。secs参数未提供,则以当前时间为准。
     4 # print(time.localtime(147352544))
     5 # gmtime([secs]) 和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。
     6 
     7 
     8 # mktime(t) : 将一个struct_time转化为时间戳。
     9 print(time.mktime(time.localtime()))  # 1552101514.0
    10 
    11 """
    12 strftime(format[, t]) : 把一个代表时间的元组或者struct_time(如由time.localtime()和
    13 time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个
    14 元素越界,ValueError的错误将会被抛出。
    15 """
    16 print(time.strftime("%Y-%m-%d %X", time.localtime()))  # 2019-03-09 11:20:10
    17 
    18 
    19 # time.strptime(string[, format])
    20 # 把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
    21 print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))
    22 
    23 # time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)
    24 # 在这个函数中,format默认为:"%a %b %d %H:%M:%S %Y"。
    1 # asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。
    2 # 如果没有参数,将会将time.localtime()作为参数传入。
    3 print(time.asctime())  # Sat Mar  9 11:24:16 2019
    4 
    5 # ctime([secs]) : 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为
    6 # None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
    7 print(time.ctime())  # Sat Mar  9 11:24:16 2019
    time.sleep(secs)  # 休眠一段时间

    2.datetime

    主要是4个类

    1. datetime.date: 是指年月日构成的日期(相当于日历)
    2. datetime.time: 是指时分秒微秒构成的一天24小时中的具体时间(相当于手表)
    3. datetime.datetime: 上面两个合在一起,既包含时间又包含日期
    4. datetime.timedelta: 时间间隔对象(timedelta)。一个时间点(datetime)加上一个时间间隔(timedelta)可以得到一个新的时间点(datetime)。比如今天的上午3点加上5个小时得到今天的上午8点。同理,两个时间点相减会得到一个时间间隔。

      datetime.date

    1.新建一个date对象,日期为今天,既可以直接调用datetime.date.today(),也可以直接向datetime.date()传值,如下:
    In [4]: today = datetime.date.today()
    In [5]: today
    Out[5]: datetime.date(2014, 8, 15)
    In [6]: t = datetime.date(2014,8,15)
    In [7]: t
    Out[7]: datetime.date(2014, 8, 15)
    
    2.datetime.date.strftime(format) 格式化为需要的时间,如常用的 “年-月-日 小时:分钟:秒” 格式
    In [8]: today.strftime('%Y-%m-%d %H:%M:%S')
    Out[8]: '2014-08-15 00:00:00’
    date对象中小时、分钟、秒默认都是0,纪元年的那个时间
    
    3.datetime.date.timple() 转成struct_time格式,这样传递给time.mktime(t)  后,直接转成时间戳格式
    In [9]: today.timetuple()
    Out[9]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=227, tm_isdst=-1)
    In [10]: time.mktime(today.timetuple())
    Out[10]: 1408032000.0
    
    4.datetime.date.replace(year, month, day)  返回一个替换后的date对象
    In [11]: today.replace(year=2013)
    Out[11]: datetime.date(2013, 8, 15)
    
    5.datetime.date.fromtimestamp(timestamp) 将时间戳转化为date对象
    In [12]: datetime.date.fromtimestamp(1408058729)
    Out[12]: datetime.date(2014, 8, 15)

      datetime.time 类

    1.新建一个time对象
    In [15]: t
    Out[15]: datetime.time(8, 45, 20)
    
    2.datetime.time.(format)格式化输出
    In [16]: t.strftime('%Y-%m-%d %H:%M:%S')
    Out[16]: '1900-01-01 08:45:20’
    time对应的年、月、日为1900、01、01,纪元年的那个时间
    
    3.datetime.time.replace([hour[, minute[, second[, microsecond[, tzinfo]]]]])  返回一个替换后的time对象
    In [17]: t.replace(hour=9)
    Out[17]: datetime.time(9, 45, 20)

      datetime.datetime类

    其实和date的那些方法差不多了,大概看以下,简单说说
    1.新建一个datetime对象,日期为今天,既可以直接调用datetime.datetime.today(),也可以直接向datetime.datetime()传值,如下:
    In [21]: d1 = datetime.datetime.today()
    In [22]: d1
    Out[22]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945)
    In [23]: d2 = datetime.datetime(2014, 8, 15, 8, 12, 34, 790945)
    In [24]: d2
    Out[24]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945)
    
    2.datetime.datetime.now([tz]) 当不指定时区时,和datetime.datetime.today()是一样的结果,如下
    In [25]: datetime.datetime.now()
    Out[25]: datetime.datetime(2014, 8, 15, 8, 14, 50, 738672)
    
    3..datetime.datetime.strftime(format) 格式化为需要的时间,如常用的 “年-月-日 小时:分钟:秒” 格式
    In [27]: d1
    Out[27]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945)
    In [28]: d1.strftime('%Y-%m-%d %H:%M:%S')
    Out[28]: '2014-08-15 08:12:34’
    
    4.datetime.datetime.timple() 转成struct_time格式,这样传递给time.mktime(t)  后,直接转成时间戳格式
    In [29]: d1
    Out[29]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945)
    In [30]: d1.timetuple()
    Out[30]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=15, tm_hour=8, tm_min=12, tm_sec=34, tm_wday=4, tm_yday=227, tm_isdst=-1)
    In [31]: time.mktime(d1.timetuple())
    Out[31]: 1408061554.0
    
    5.datetime.datetime.replace(year, month, day)  返回一个替换后的date对象
    In [32]: d1
    Out[32]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945)
    In [33]: d1.replace(year=2000)
    Out[33]: datetime.datetime(2000, 8, 15, 8, 12, 34, 790945)
    
    6.datetime.datetime.fromtimestamp(timestamp) 将时间戳转化为datetime对象
    In [34]: time.time()
    Out[34]: 1408061894.081552
    In [35]: datetime.datetime.fromtimestamp(1408061894)
    Out[35]: datetime.datetime(2014, 8, 15, 8, 18, 14)

      datetime.timedelta类

    没啥好说的,主要做时间的加减法用,如下:
    In [78]: today = datetime.datetime.today()
    In [79]: yesterday = today - datetime.timedelta(days=1)
    In [80]: yesterday
    Out[80]: datetime.datetime(2014, 8, 14, 15, 8, 25, 783471)
    In [81]: today
    Out[81]: datetime.datetime(2014, 8, 15, 15, 8, 25, 783471)

    原文

    二.random

     1 import random
     2  
     3 print(random.random())#(0,1)----float    大于0且小于1之间的小数
     4  
     5 print(random.randint(1,3))  #[1,3]    大于等于1且小于等于3之间的整数
     6  
     7 print(random.randrange(1,3)) #[1,3)    大于等于1且小于3之间的整数
     8  
     9 print(random.choice([1,'23',[4,5]]))#1或者23或者[4,5]
    10  
    11 print(random.sample([1,'23',[4,5]],2))#列表元素任意2个组合
    12  
    13 print(random.uniform(1,3))#大于1小于3的小数,如1.927109612082716 
    14  
    15  
    16 item=[1,3,5,7,9]
    17 random.shuffle(item) #打乱item的顺序,相当于"洗牌"
    18 print(item)

    随机字符串

     1 import random
     2 def make_code(n):
     3     res=''
     4     for i in range(n):
     5         s1=chr(random.randint(65,90))
     6         s2=str(random.randint(0,9))
     7         res+=random.choice([s1,s2])
     8     return res
     9 
    10 print(make_code(9))

    三.os

    os模块是与操作系统交互的一个接口

     1 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
     2 os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
     3 os.curdir  返回当前目录: ('.')
     4 os.pardir  获取当前目录的父目录字符串名:('..')
     5 os.makedirs('dirname1/dirname2')    可生成多层递归目录
     6 os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
     7 os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
     8 os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
     9 os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
    10 os.remove()  删除一个文件
    11 os.rename("oldname","newname")  重命名文件/目录
    12 os.stat('path/filename')  获取文件/目录信息
    13 os.sep    输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
    14 os.linesep    输出当前平台使用的行终止符,win下为"	
    ",Linux下为"
    "
    15 os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
    16 os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
    17 os.system("bash command")  运行shell命令,直接显示
    18 os.environ  获取系统环境变量
    19 os.path.abspath(path)  返回path规范化的绝对路径
    20 os.path.split(path)  将path分割成目录和文件名二元组返回
    21 os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
    22 os.path.basename(path)  返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素
    23 os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
    24 os.path.isabs(path)  如果path是绝对路径,返回True
    25 os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
    26 os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
    27 os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
    28 os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
    29 os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
    30 os.path.getsize(path) 返回path的大小

    四.sys

    1 sys.argv           命令行参数List,第一个元素是程序本身路径
    2 sys.exit(n)        退出程序,正常退出时exit(0)
    3 sys.version        获取Python解释程序的版本信息
    4 sys.maxint         最大的Int值
    5 sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
    6 sys.platform       返回操作系统平台名称
    7 sys.stdout
    8.    sys.stdout.write  写入
    9.    sys.stdout.flush  刷新到屏幕上
        
     1 #=========知识储备==========
     2 #进度条的效果
     3 [#             ]
     4 [##            ]
     5 [###           ]
     6 [####          ]
     7 
     8 #指定宽度
     9 print('[%-15s]' %'#')
    10 print('[%-15s]' %'##')
    11 print('[%-15s]' %'###')
    12 print('[%-15s]' %'####')
    13 
    14 #打印%
    15 print('%s%%' %(100)) #第二个%号代表取消第一个%的特殊意义
    16 
    17 #可传参来控制宽度
    18 print('[%%-%ds]' %50) #[%-50s]
    19 print(('[%%-%ds]' %50) %'#')
    20 print(('[%%-%ds]' %50) %'##')
    21 print(('[%%-%ds]' %50) %'###')
    22 
    23 
    24 #=========实现打印进度条函数==========
    25 import sys
    26 import time
    27 
    28 def progress(percent,width=50):
    29     if percent >= 1:
    30         percent=1
    31     show_str=('[%%-%ds]' %width) %(int(width*percent)*'#')
    32     print('
    %s %d%%' %(show_str,int(100*percent)),file=sys.stdout,flush=True,end='')
    33 
    34 
    35 #=========应用==========
    36 data_size=1025
    37 recv_size=0
    38 while recv_size < data_size:
    39     time.sleep(0.1) #模拟数据的传输延迟
    40     recv_size+=1024 #每次收1024
    41 
    42     percent=recv_size/data_size #接收的比例
    43     progress(percent,width=70) #进度条的宽度70
    44 
    45 打印进度条
    打印进度条

    五.序列化

    六.re模块

    详细见博客

  • 相关阅读:
    20200910-3 命令行和控制台编程
    C语言1作业04
    C语言1博客作业03
    c语言1博客作业02
    2018寒假作业--3抓老鼠啊~亏了还是赚了?
    2018寒假作业2--币值转换
    2018寒假作业-1 打印沙漏
    记叙在人生路上对我影响最大的三位老师
    自我介绍
    抓老鼠啊~亏了还是赚了?编程总结
  • 原文地址:https://www.cnblogs.com/pantong/p/10500210.html
Copyright © 2011-2022 走看看