Python之常用模块一与序列化

# collections
# namedtuple
# deque
# Counter
# OrderedDict
# defaultdict
# 命名元组
# from collections import namedtuple
# websites = [
#     ('Sohu','http://www.google.com',u'张朝阳'),
#     ('Sina','http://www.sina.com.cn',u'王志东'),
#     ('163','http://www.163.com',u'丁磊')
# ]
#
# # 第一种创建命名元组的方法
# WebSites = namedtuple('Websites',['name','url','founder'])
# for website in websites:
#     website = WebSites._make(website)
#     print(website)
# # 第二种创建命名元组的方法
# Web1 = namedtuple('Web1',['name','url','creater'])
# web1 = Web1(*websites[0])
# print(web1)
# # 命名元组的取值
# print(web1.name)
# print(web1.url)
# print(web1.creater)

# 双端队列
# from collections import deque
# dq = deque(websites[2])
# print(dq)
# print(dq.pop()) # 从队列末端开始取值
# print(dq.popleft()) # 从队列首端开始取值
# dq.extend(websites[0]) # 将指定列表扩展到本列表的末尾 deque(['http://www.163.com', 'Sohu', 'http://www.google.com', '张朝阳'])
# print(dq)
# dq.extendleft(websites[1]) # 将指定列表扩展到本列表的前端,倒序 deque(['王志东', 'http://www.sina.com.cn', 'Sina', 'http://www.163.com', 'Sohu', 'http://www.google.com', '张朝阳'])
# print(dq)
# # 同时还有append,appendleft往队列放值得方法

# 时间模块time,datetime
# import time
# print(time.time()) # 获取时间戳
# print(time.sleep(3)) # 让系统睡3秒
# print(time.ctime()) # 字符串时间,可给时间戳作为实参
# print(time.ctime(time.time() + 3600)) # 一小时后得字符串时间格式
# print(time.gmtime()) # 返回结构化格林威治时间(比本地时间晚8小时),可给时间戳作为实参
# print(time.localtime()) # 返回本地结构化时间,可给时间错作为实参
# print(time.mktime(time.localtime())) # 将结构化时间转化为时间戳
# print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime())) # 将结构化时间转化为指定格式字符串时间,默认转化当前时间
# print(time.strptime("2018-09-30/03:03:03","%Y-%m-%d/%H:%M:%S")) # 将字符串时间转化为结构化时间
import datetime,time
# 关注日期
# date = datetime.date(2019,3,10)
# print(date)
# print(date.year)
# print(date.month)
# print(date.day)
# print(date.ctime())
# print(date.fromtimestamp(time.time())) # 获取当天的日期
# print(date.isoweekday()) # 获取星期 Monday=1...Sunday=7
# print(date.replace(day=1)) # 修改日期为当月1号
# print(date.timetuple()) # 输出结构化时间
# print(date.today()) # 输出当天得日期
# print(date.weekday()) # 输出星期 Monday=0...Sunday=6
# 关注日期和时间
# dtime = datetime.datetime(2019,3,9)
# print(dtime.astimezone())
# print(dtime.ctime()) # 返回与time.ctime()相同格式
# print(dtime.date()) # 返回日期
# mytime = dtime.fromtimestamp(time.time()) # 获取当前时间
# print(mytime)
# print(mytime.date()) # 输出获取到得日期
# print(mytime.time()) # 输出获取到得时刻
# print(mytime.timetuple()) # 输出格式化时间
# print(mytime.timestamp()) # 输出时间戳
# print(mytime.year) # 输出年
# print(mytime.month) # 输出月
# print(mytime.day) # 输出日
# print(mytime.hour) # 输出时
# print(mytime.minute) # 输出分
# print(mytime.second) # 输出秒
# print(mytime.microsecond) # 输出微秒
# print(mytime.strftime("%Y%m%d%H%M%S")) # 输出指定格式字符串时间

# 关注时间
# t = datetime.time()
# print(t)
# t = t.replace(hour=21,minute=50,second=32)
# print(t)
# print(t.strftime("%H:%M:%S")) # 输出指定格式字符串时间
# print(t.hour) # 输出时
# print(t.minute) # 输出分
# print(t.second) # 输出秒

# 时间差
# td = datetime.timedelta(1) # 一个参数时为天数时间差
# print(td)
# today = datetime.date(2019,3,9)
# tomorrow = today + td
# print(tomorrow)
# yesterday = today - td
# print(yesterday)
# print(td.days)
# curTime = datetime.datetime(1997,1,1)
# curTime = curTime.fromtimestamp(time.time())
# print(curTime)
# ts = datetime.timedelta(2,10) # 两个参数,2为天数时间差,1为秒得时间差
# print(ts)
# _10miago = curTime - ts
# print(_10miago)

# import os
# os.makedirs('dir1/dir2')    # 递归创建目录
# os.removedirs('dir1')   # 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
# os.mkdir('dir')  # 创建一个目录
# os.rmdir('dir')   # 删除单级空目录
# os.listdir('dir')  #  列出指定目录下的所有文件和子目目录,返回列表
# os.remove()  # 删除一个文件
# os.rename("oldname","newname")  # 重命名文件/目录
# os.stat('path/filename')  # 获取文件/目录信息
#
# os.system("bash command")  # 执行shell命令,结果打印到屏幕,不可获取
# os.popen("bash command").read() # 运行shell命令,获取执行结果
# os.getcwd() # 获取当前工作目录
# os.chdir("dirname") # 改变当前脚本工作目录
#
# os.path
# path = '/process/day1/filename'
# os.path.abspath(path) # 返回绝对路径,与当前目录的绝对路径拼接
# os.path.split(path) # 将path分割成目录和文件名
# os.path.dirname(path) # 返回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.isfile(path) # 如果path是一个存在的文件,返回True。否则返回False
# os.path.isdir(path)  # 如果path是一个存在的目录,则返回True。否则返回False
# os.path.join(path1[, path2[, ...]]) # 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
# os.path.getatime('filename') # 返回文件所指向的文件或者目录的最后访问时间
# os.path.getmtime('filename') # 返回文件所指向的文件或者目录的最后修改时间
# os.path.getsize('filename') # 返回文件的大小

# 序列化 json 可以一次性在一个文件多次load,但dump读不出来,需要以字符串形式读出再用dumps处理多个
# import json
# lst = ['晴天','雨天','阴天','白天']
# dic = {'百度':'http://www.baidu.com','新浪':'http://www.sina.com','163':'http://www.163.com.cn'}
# f = open('json.txt','w',encoding='utf-8')
# json.dump(dic,f,ensure_ascii=False) # 让中文显示为中文而非字节码,需要加ensure_ascii=False
# f.close()
# f = open('json.txt')
# dic_load = json.load(f)
# f.close()
# print(dic_load)
# dic_dumps = json.dumps(dic,ensure_ascii=False)
# print(dic_dumps,type(dic_dumps))
# dic_loads = json.loads(dic_dumps)
# print(dic_loads,type(dic_loads))


# picle 支持所有python的数据类型-dump和dumps均为字节码,支持多次dump,多次load
import pickle
# lst = ['晴天','雨天','阴天','白天']
# f = open('pickle.txt','wb') # 要以wb打开
# pickle.dump(lst,f)
# f.close()
# file = open('pickle.txt','rb') # 要以rb打开
# file_pickle = pickle.load(file)
# print(file_pickle)

# f = open('pickle.txt','wb') # 要以wb打开
# pickle.dump(lst,f)
# pickle.dump(lst,f)
# pickle.dump(lst,f)
# f.close()
# file = open('pickle.txt','rb') # 要以rb打开
# file_pickle1 = pickle.load(file)
# file_pickle2 = pickle.load(file)
# file_pickle3 = pickle.load(file)
# print(file_pickle1)
# print(file_pickle2)
# print(file_pickle3)
# pickle.loads()
# pickle.dumps()

import shelve
# dic = {'百度':'http://www.baidu.com','新浪':'http://www.sina.com','163':'http://www.163.com.cn'}
# f = shelve.open('shelve_file')
# f['key'] = dic
# f.close()
# f = shelve.open('shelve_file')
# dic = f['key']
# f.close()
# print(dic)
# 支持写入多个
# f = shelve.open('shelve_file')
# f['key1'] = dic
# f['key2'] = lst
# f.close()
# f = shelve.open('shelve_file')
# dic = f['key1']
# lst = f['key2']
# f.close()
# print(dic)
# print(lst)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值