常用模块 time sys os json pickle

# import time
# print(time.time())  #秒数
# print('开始下载')
# time.sleep(2)
# print('下载完成')
# print(time.localtime())    # 东八区上海 time.struct_time(tm_year=2019, tm_mon=4, tm_mday=10, tm_hour=14, tm_min=32, tm_sec=22, tm_wday=2, tm_yday=100, tm_isdst=0)
# print(time.localtime()[l])  # 4
# print(time.localtime().tm_year)  #2019 年
# print(time.gmtime())        # utc时区 time.struct_time(tm_year=2019, tm_mon=4, tm_mday=10, tm_hour=6, tm_min=36, tm_sec=50, tm_wday=2, tm_yday=100, tm_isdst=0)
# print(time.localtime(298999))   #time.struct_time(tm_year=1970, tm_mon=l, tm_mday=4, tm_hour=19, tm_min=3, tm_sec=19, tm_wday=6, tm_yday=4, tm_isdst=0)
# print(time.localtime(time.time()))  #time.struct_time(tm_year=2019, tm_mon=4, tm_mday=10, tm_hour=14, tm_min=41, tm_sec=11, tm_wday=2, tm_yday=100, tm_isdst=0)
# print(time.localtime(2018).tm_year)  #1970
# res=time.strftime('%y_%m_%d %j days')   #19_04_10 100 days
# res=time.strftime('%Y_%m_%d %j days')   #2019_04_10 100 days
# print(res)
# t=(2010,4,10,10,29,22,2,200,0)
# res=time.strftime('%y_%m_%d %j days',t)  # 如果不传t 默认是time.localtime() 10_04_10 200 days
# print(res)
# 需求:输入一个年份,判断其是否是闰年
# while True:
#     year=int(input('year:'))
#     b1=year %400 ==0
#     b2 =year % 4 ==0 and  year %100 != 0
#     if b1 or b2:
#         print('是闰年')
#     else:
#         print('不是闰年')
'''
判断闰年:calendar.isleap(year)
查看某年某月日历: calendar.month(year,month)
查看某年某月起始星期与当月天数: calendar.monthrange(year,month)
查看某年某月某日是星期几: calender.weekday(year,month,day)
'''
import calendar

# print(calendar.isleap(2019))   False
# print(calendar.month(2019,4))   日历      April 2019
#                                     Mo Tu We Th Fr Sa Su
#                                      l  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,4))   #(0, 30) 0星期一 30天
# print(calendar.weekday(2018,9,9))    # 6 星期天


'''
当天时间: datetime.datetime.now()
昨天:datetime.datetime.now()+datetime.timedelta()
修改时间:c_time.replace([...])
格式化时间戳:datetime.date.fromtimestamp(timestamp)
'''
# import datetime   #时间加减
# tm=datetime.datetime.now()
# print(tm,type(tm))     #2019-04-10 15:21:20.222756 <class 'datetime.datetime'>
# import time
# print(type(time.time()))        #<class 'float'>
# import datetime
# day=datetime.timedelta(days=l)
# print(day,type(day))         #l day, 0:00:00 <class 'datetime.timedelta'>
# tm 与day都是对象,可以直接做运算
# print(tm-day)     #2019-04-09 15:21:20.222756

# tm是对象,还可以接着调用方法
# print(tm.replace(year=2100))   #2100-04-10 15:23:32.663331
#
# print(datetime.date.fromtimestamp(5656565653))  # 2149-04-01 需要时间戳

'''
import  sys
# print(sys.argv)   #['E:/代码存放位置/第四周/time os sys json pickle.py'] 命令行参数List,第一个元素是程序本身路径
# print(sys.path) # 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
# print(sys.version)  #获取python解释程序的版本信息
# print(sys.maxsize)   #最大的整数值
    # a=908878788778787877
    # print(a,type(a))     #908878788778787877 <class 'int'>
# print(sys.platform)  #返回操作系统平台名称 win32

'''

'''
import  os
os.mkdir('dirname')  生成单级目录
os.makedirs('dirname1/..../dirname2')  生成多层目录
os.rename('oldname','newname')  重命名文件、目录
os.getcwd()   工作目录
os.rmdir('dirname')  删除单层空目录
os.removedirs('dirname1/.../dirname2') 移除多层空目录  若目录为空则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.listdir('dirname')  列举目录下所有资源 
os.sep   路径分隔符
os.linesep  行终止符
os.pathsep  文件分隔符 分隔文件路径的字符串 win下为; linux下为:
os.name     操作系统名
os.environ  操作系统环境变量
os.system()  执行shell脚本
'''
# import  os
# print(os.getcwd())  #E:\代码存放位置\第四周  当前工作目录
# print(__file__)   #E:/代码存放位置/第四周/time os sys json pickle.py   当前工作的文件绝对路径
# os.mkdir('aaa')     #生成单级目录  不存在创建 存在报错
# os.rename('aaa','222')   #重命名  不存在报错,存在则修改名字
# os.remove('333.py')  #删除文件  不是文件夹
# os.rmdir(r'E:\代码存放位置\第四周\222')  # 删除文件夹
# os.rmdir('aaa/bbb')  #删除的是aaa下面的bbb
# os.rmdir('aaa')
# os.remove('aaa/bbb.py')  #删除的是aaa下面的bbb.py文件
#   os.rmdir('aaa')
# os.rmdir('a/b/c')
# os.mkdir('a/b/c')   #a,b必须存在 c必须不存在
# os.makedirs('aa/bb/cc')  #全存在,则报错 a,b 存在与否不是一定的
# os.removedirs('a/b/c')   #必须全部存在  c空删c b空 删b 以此类推,如果b不为空,删除c后就停止操作
# print(os.sep)   #\  路径分隔符
# print(ascii(os.linesep))   #'\r\n' 输出当前平台使用的行终止符
# print(os.pathsep)  # 输出用于分隔文件路径的字符串;
# print(os.system('dir'))    #运行shell命令,直接显示
# res=os.listdir(r'D:')
# print(res)              #打印d目录下所有文件和子目录 包括隐藏文件  并以列表形式打印
# print(os.name)  #操作系统名字 win nt

'''
执行文件的当前路径:_file__
返回path规范化的绝对路径:os.path.abspath(path)
将path分割成目录和文件名二元组返回:os.path.splir(path)
上一级目录:os.path.dirname(path)
最后一级名称:os.path.basename(path)
指定路径(目录、文件)是否存在:os.path.exists(path)
是否是绝对路径:os.path.isabs(path)
是否是文件:os.path.isfile(path)
是否是(目录)路径:os.path.isdir(path)
路径拼接:os.path.join(path1[,path2[,...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
最后存取时间:os.path.getatime(path)
最后修改时间:os.path.getmtime(path)
目标大小:os.path.getsize(path)

'''
# import  os.path as os_path
# print(os_path)
# print(os_path.isdir(r'E:\代码存放位置\第四周\time os sys json pickle.py'))   # F如果path是一个存在的目录 返回 Ture 否则返回False
# print(os_path.isfile(r'E:\代码存放位置\第四周\time os sys json pickle.py'))    #T 如果path是一个存在文件,返回Ture 否则返回False
# print(os_path.exists(r'E:\代码存放位置\第四周\time os sys json pickle.py'))    # T 如果path存在,返回True;如果path不存在,返回False

# print(os_path.isdir(r'E:\代码存放位置\第四周'))   # T 如果path是一个存在的目录 返回 Ture 否则返回False
# print(os_path.isfile(r'E:\代码存放位置\第四周'))    #F 如果path是一个存在文件,返回Ture 否则返回False
# print(os_path.exists(r'E:\代码存放位置\第四周'))    # T 如果path存在,返回True;如果path不存在,返回False

# print(os_path.exists(r'aa'))   #True
# print(os_path.isabs(r'aa'))      #False  path是绝对路径返回Ture
# print(os_path.isabs(r'E:\代码存放位置\第四周\aa'))   #True
# print(os_path.abspath(r'aa'))    #E:\代码存放位置\第四周\aa    返回path规范化的绝对路径
import os
# print(os.path.split(r'E:\代码存放位置\第四周\time os sys json pickle.py'))
# 右切分 ('E:\\代码存放位置\\第四周', 'time os sys json pickle.py')

# print(os.path.split(r'D:/fullstack_s4/day17/代码/part1/系统模块.py'))
# ('D:/fullstack_s4/day17/代码/part1', '系统模块.py')

# print(os.path.split(r'D:\fullstack_s4\day17\代码\part1'))
# ('D:\\fullstack_s4\\day17\\代码', 'part1')

# print(os.path.split(r'D:\fullstack_s4\day17\代码\part1\\'))
# ('D:\\fullstack_s4\\day17\\代码\\part1', '')
# print(os.path.dirname(os.path.dirname(r'D:\fullstack_s4\day17\代码\part1\a\b')))
# D:\fullstack_s4\day17\代码\part1
# print(os.path.basename(r'D:\fullstack_s4\day17\代码\part1\a\b'))
# b
# print(os.path.join(r'D:\fullstack_s4\day17\代码\part1', 'a', 'b'))
# D:\fullstack_s4\day17\代码\part1\a\b
# 先将项目的根目录设置为常量-》项目中的所有目录与文件都应该参照目录进行导包
# BASE_PATH=os.path.dirname(os.path.dirname(__file__))
# print(BASE_PATH)  #E:/代码存放位置
# sys.path.append(BASE_PATH)
# 重点:将项目目录添加至环境变量

# 拼接项目中某一文件或文件夹的绝对路径
# file_path=os.path.join(BASE_PATH,'part1','时间模块.py')
# print(file_path)   #E:/代码存放位置\part1\时间模块.py
# print(os.path.exists(file_path))
# print(os.path.getmtime(r'D:\fullstack_s4\day17\代码\part1\时间模块.py'))
# 最后修改时间

# >>>os.path.normcase('c:/windows\\system32\\')
# 'c:\\windows\\system32\\'
# 在Linux和mac平台上,该函数会原样返回path,在win平台上会将路径中虽有字符转为小写,并将所有斜杠转换成双斜杠
# 重点:
# import os
# import sys
# BASE_PATH=os.path.dirname(os.path.dirname(__file__))
# sys.path.append(BASE_PATH)
# BASE_PATH=os.path.normpath(os.path.join(__file__,'..','..'))
# sys.path.append(BASE_PATH)

# 序列化
import json

# 将json类型的对象与json类型的字符串相互转换
# {}与[]嵌套型成的数据(python中建议数据的从{}开始)
dic = {
    'a': 1,
    'b': [1, 2, 3, 4, 5]
}
# 序列化:将python的字典转化为字符串传递给其他语言或保存
# json_str = json.dumps(dic)
# print(json_str, type(json_str))  # {"a": l, "b": [l, 2, 3, 4, 5]} <class 'str'>
with open('l', 'w', encoding='utf-8')as w:
    json.dump(dic, w)  # 先将dic对象转化为字符串,在写入文件

# 反序列化
# json_str='''{"a":l,"b":['l',2,3,4,5]}'''     #'l'
# json_str = "{'a': l, 'b': [l, 2, 3, 4, 5]}"  #'a'
# json_str = '''{"a": l, "b": [l, 2, 3, 4, 5]}'''
# new_dic=json.loads(json_str)   #json类型的字符串不认识 ''
# print(new_dic,type(new_dic))   #将字符串转成字典


# with open('l','r',encoding='utf-8')as r:
#     res=json.load(r)
#     print(res,type(res))  #{'a': 1, 'b': [1, 2, 3, 4, 5]} <class 'dict'>
import pickle
# 可以将任意类型对象与字符串进行转换
dic={
    'a':1,
    'b':[1,2,3,4,5]
}
res=pickle.dumps(dic)
print(res)       #byesl类型 b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02]q\x03(K\x01K\x02K\x03K\x04K\x05eu.'

with open('2', 'wb') as w:
    pickle.dump(dic, w)

print(pickle.loads(res))   #{'a': 1, 'b': [1, 2, 3, 4, 5]}

with open('2','rb')as f:
    res1=pickle.load(f)
    print(res1)           #{'a': 1, 'b': [1, 2, 3, 4, 5]}
json类型的对象与json类型的字符串相互转换 pickle可以将任意类型对象与字符串进行转换
json.dumps将字典转成字典形式的字符串(序列化 字典无序,字符串有序(索引)) json.loads 将字典形式的字符串转换成字典(反序列化)
和文件有关的只有序列dump 反序列load(b模式下) dump 两个参数一个字典,一个文件名 load 只有一个参数 文件名

猜你喜欢

转载自www.cnblogs.com/lakei/p/10685686.html