# 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.split(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(', 'wb') as w:
pickle.dump(dic, w)
注:字节形式操作 反序列化成对象:
print(pickle.loads(res)) #{'a': 1, 'b': [1, 2, 3, 4, 5]}
从文件读流中反序列化成对象
with open(','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 只有一个参数 文件名