常用模块

时间模块    time

import time
time.time()
print(time.time())  #时间戳   1554879802.0031486  是数据的唯一标识
print('start')
time.sleep(2)
print('stop')
print(time.localtime())  #当下时间
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=10, tm_hour=15, tm_min=3, tm_sec=22, tm_wday=2, tm_yday=100, tm_isdst=0)
print(time.gmtime())  #格林威治时间
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=10, tm_hour=7, tm_min=3, tm_sec=22, tm_wday=2, tm_yday=100, tm_isdst=0)
print(time.strftime('%Y-%m-%d'))  #完整的年月日  2019-04-10
print(time.strftime('%Y'))  #完整的年份   2019
print(time.strftime('%y'))  #两位数的年份  19
print(time.strftime('%m'))  #月份(01-12)    04
print(time.strftime('%d'))  #日期(01-31   10
print(time.strftime('%H'))  #24小时制的小时数(00-24)    15
print(time.strftime('%I'))  #12小时制的小时数(01-12)   03
print(time.strftime('%M'))  #分(00-59)   08
print(time.strftime('%S'))  #秒(00-59)   48
print(time.strftime('%a'))  #本地星期简化名称   Wed
print(time.strftime('%A'))  #本地完整星期名称   Wednesday
print(time.strftime('%B'))  #本地完整月份名称   April
print(time.strftime('%b'))  #本地简化月份名称   Apr
print(time.strftime('%c'))  #本地相应的日期和时间   Wed Apr 10 15:08:48 2019
print(time.strftime('%j'))  #一年中的第几天   100
print(time.strftime('%p'))  #上午或者下午   PM
print(time.strftime('%u'))  #星期几   3
print(time.strftime('%w'))  #星期几   3
print(time.strftime('%W'))  #一年中的星期数(00-53)星期一为星期的开始    14
print(time.strftime('%x'))  #当地相对应的日期表示    04/10/19
print(time.strftime('%X'))  #本地相对应的时间表示    15:08:48
print(time.strftime('%z'))  #当前时区的名称   +0800
格式化时间q=(2020, 4, 10, 10, 19, 22, 2, 200, 0)
print(time.strftime('%Y-%m-%d %j %H days', q))

自己写一个判断是否为闰年

直接被400整除,可以被4整除但是不能被100整除
year1 = int(input('year:'))
d1 = year1 % 400 == 0
d2 = year1 % 4 == 0 and year1 % 100 != 0
if d1 or d2:
    print('')
else:
    print('不是 ')

日历模块:  calendar

import calendar
print(calendar.isleap(2003))  # 判断是否为闰年   True或者False
print(calendar.month(2019,4))  #查看某年某月日历
April 2019
Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
print(calendar.monthrange(2019,3))   #查看某年某月起始星期几与当月的天数    (4, 31)
print(calendar.weekday(2019,5,1))   #查看某年某月某日是星几   2

可以运算的时间   datatime

import  datetime
print(datetime.datetime.now())   #当前时间   2019-04-10 15:46:41.892413
print(datetime.datetime.now() + datetime.timedelta(hours=-2))   #以前的时间   2019-04-10 13:48:46.498839
# datetime.timedelta(days=-1)  ()里的就是你想加减去的时间
print(datetime.datetime.now().replace(year=2020,hour=19))   #修改的时间
# 2020-04-10 19:57:45.468183
print(datetime.date.fromtimestamp(12321231))  #格式化的时间
1970-05-23

系统: sys

import sys
print(sys.argv)  #命令行参数list,第一个元素是程序本身路径
['D:/pycharm/脱产七期/day  17  4.10  常见模块/常见模块练习.py']

print(sys.exit()) #退出程序
print(sys.version)   #Python解释器的版本信息
3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)]
print(sys.maxsize)   #获取最大int值  9223372036854775807
print(sys.path)   #环境变量
['D:\pycharm\脱产七期\day  17  4.10  常见模块', 'D:\pycharm\脱产七期', 'C:\Python36\python36.zip', 'C:\Python36\DLLs', 'C:\Python36\lib', 'C:\Python36', 'C:\Python36\lib\site-packages', 'D:\PyCharm 2018.3.5\helpers\pycharm_matplotlib_backend']
print(sys.platform)  #操作系统平台名称   win32

操作系统 :os

import os
print(os.mkdir('qqqq'))  #生成单级目录
print(os.makedirs('qqq/www/eee'))   #生成多级目录
print(os.rename('eee','rrr'))   #文件重命名
print(os.getcwd())   #工作目录   D:pycharm脱产七期day  17  4.10  常见模块
print(os.rmdir('qqqq'))   #删除单层目录
print(os.removedirs('qqq/www/eee'))   #删除多层目录
print(os.listdir('qqq'))    #列举目录下所有资源  ['www']
print(os.sep)   #路径分隔符  
print(os.linesep)    #行终止符
print(os.pathsep)    #文件分隔符   ;
print(os.name)    #操作系统名   nt
print(os.environ)   #操作系统环境变量
print(os.system())    #执行shell脚本

系统路径操作 os.path

import os.path
print(__file__)    #执行文件的当前路径   D:/pycharm/脱产七期/day  17  4.10  常见模块/常见模块练习.py
print(os.path.abspath('D:pycharm脱产七期day  17  4.10  常见模块'))   #返回path规范化的绝对路径   D:pycharm脱产七期day  17  4.10  常见模块
print(os.path.split('D:pycharm脱产七期day  17  4.10  常见模块'))  #将path分割成目录和文件名二元组返回   ('D:\pycharm\脱产七期', 'day  17  4.10  常见模块')
print(os.path.dirname('D:pycharm脱产七期day  17  4.10  常见模块'))   #上一级目录   D:pycharm脱产七期
print(os.path.basename('D:pycharm脱产七期day  17  4.10  常见模块'))   #最后一级名称    day  17  4.10  常见模块
print(os.path.exists('D:pycharm脱产七期day  17  4.10  常见模块'))  #指定路径是否存在   True
print(os.path.isabs('D:pycharm脱产七期day  17  4.10  常见模块'))    #是否是绝对路径   True
print(os.path.isfile('D:pycharm脱产七期day  17  4.10  常见模块'))   #是否是文件   False
print(os.path.isdir('D:pycharm脱产七期day  17  4.10  常见模块'))   #是否是路径   True
print(os.path.join(path1[, path2[, ...]]))   #路径拼接
print(os.path.getatime('D:pycharm脱产七期day  17  4.10  常见模块'))  #最后存取时间   1554885847.2432308
print(os.path.getmtime('D:pycharm脱产七期day  17  4.10  常见模块'))   #最后修改时间   1554885847.2432308
print(os.path.getsize('D:pycharm脱产七期day  17  4.10  常见模块'))   #目标大小  0

序列化    json

import json
json:{} 与 [] 嵌套的数据
注意:json中的字符串必须全部用""来标识
dic = {
    'a': 1,
    'b': [1, 2, 3, 4, 5]
}
序列化: 将python的字典转化为字符串传递给其他语言或保存
json_dumps=json.dumps(dic)
print(json_dumps)  #序列化转化字符串   {"a": 1, "b": [1, 2, 3, 4, 5]}
with open('zzz','w',encoding='utf-8') as w:
    w.write(json_dumps)  #将序列化字符串写到文件中



字符形式操作
反序列化成对象
json_dumps='''{"a": 1, "b": [1, 2, 3, 4, 5]}'''
json_str=json.loads(json_dumps)
print(json_str)
从文件中反序列化成对象
with open('zzz','r',encoding='utf-8') as r:
    res=json.load(r)
    print(res)

序列化   pickle

import pickle
dic = {
    'a': 1,
    'b': [1, 2, 3, 4, 5]
}
res = pickle.dumps(dic)
print(res)   #序列化成字符串

with open('xxx', 'wb') as w:
    w.write(res)   #序列化字符串到文件中

字节形式操作
print(pickle.loads(res))   #反序列化成对象


with open('xxx', 'rb') as r:
    print(pickle.load(r))   #从文件中反序列化成对象

 随机数  random

import random
print(random.random())   #(0,1)  小数:0.6071058391747245
print(random.randint(1,10))     #[1,10]   整数: 9
print(random.randrange(1,10))  #[1,10)   整数:  5
print(random.uniform(1,10))    #(1,10)   小数:4.281837749353642
li=[1,2,3,4,5,6,7,8]
print(random.choice(li))   #单列集合随机选择1个:6
print(random.sample(li,3))   #单列集合随机选择n个:[4, 7, 5]

 案例:产生指定位数的验证码

import random
def random_code(count):
    code=''
    for i in range(count):
        num=random.randint(1,3)  #判断你要验证的是数字,大写之母,小写字母
        if num ==1:
            tag = str(random.randint(0,9))
        elif num ==2:
            tag = chr(random.randint(65,90))  #小写字符的二进制比较
        else:
            tag = chr(random.randint(92,122))   #大写字符的二进制比较
        code+=tag
    return code
print(random_code(6))   #dWuoba
View Code

可以操作权限的文件处理模块  shutil

import  shutil
print(shutil.copyfile('ooo.py','iii.py'))   #基于路径的文件复制
with open('ooo.py','rb')  as  r,open('iii.py','wb')  as  w:
    shutil.copyfileobj(r,w)   #基于流的文件复制
print(shutil.rmtree('ppp'))   #递归删除目标目录
print(shutil.move('ooo.py','lll.py'))   #文件移动(类似于重命名)
print(shutil.make_archive('iii.py','zip','D:pycharm脱产七期day18   4.11常见模块kkkk'))
print(shutil.unpack_archive('D:pycharm脱产七期day18   4.11常见模块iii.py.zip','ooo.py.zip','zip'))

可以用字典存取数据到文件的序列化模块    shelve

import shelve
s_dic = shelve.open("target.txt")  # 注:writeback=True操作数据会同步写到文件
序列化::存
s_dic['key1'] = [1, 2, 3, 4, 5]
s_dic['key2'] = {'name': 'Bob', 'age': 18}
s_dic['key3'] = 'abc'
文件释放
s_dic.close()

s_dic = shelve.open("target.txt", writeback=True)
print(s_dic['key1'])
s_dic['key1'][2] = 30
print(s_dic['key1'])

print(s_dic['key2'])
s_dic['key2']['age'] = 300
print(s_dic['key2'])

print(s_dic['key3'])
s_dic['key3'] = 'def'
print(s_dic['key3'])
s_dic.close()

标准输入,标准输出,错误流

import sys
print(sys.stdout.write('123
'))  #标准输出   123
print(sys.stderr.write('错误信息
'))  #标准错误流   错误信息
res = sys.stdin.read(3)  #()是你在控制台要输入的字符个数   bdgasf===>bdg
print(res)  #标准输入
print默认是对sys.stdout.write('msg') + sys.stdout.write('
')的封装
格式化结束符print:print('msg', end='')