s21day16 python笔记
程序员文章站
2022-07-07 08:22:16
s21day16 python笔记 一、模块 1.1 模块的定义 1. 模块的定义 可以吧一个py文件或一个文件夹(包)当作一个模块,以便于以后其他py文件的调用 2. 包的定义(python2与python3的区别七) python2:文件夹中必须有_ _ init _ _.py文件 python ......
s21day16 python笔记
一、模块
1.1 模块的定义
- 模块的定义
- 可以吧一个py文件或一个文件夹(包)当作一个模块,以便于以后其他py文件的调用
- 包的定义(python2与python3的区别七)
- python2:文件夹中必须有_ _ init _ _.py文件
- python3:不需要有_ _ init _ _.py文件
- 建议:推荐以后写代码,无论是python2还是python3,都要加上此文件
1.2 模块分类(内置模块补充)
- time:时间模块
- time.time:时间戳(从1970年到现在经历的秒数)
# https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=4zwifhm6iw==&tip=1&r=-781028520&_=1555559189206
time.sleep:等待的秒数
time.timezone
- datetime:时间模块
datetime.now():当前本地时间
datetime.utcnow():当前utc时间
import time from datetime import datetime,timezone,timedelta # 获取datetime格式时间 # 当前本地时间 v1 = datetime.now() # 当前东7区时间 tz = timezone(timedelta(hours=7)) v2 = datetime.now(tz) # 当前utc时间 v3 = datetime.utcnow() print(v3)
- 相互转换
import time from datetime import datetime,timedelta # 1.datetime格式和字符串的相互转换 # 把datetime格式转换成字符串:strftime v1 = datetime.now() val = v1.strftime("%y-%m-%d %h:%m:%s") # 字符串转成datetime格式:strptime v1 = datetime.strptime('2011-11-11','%y-%m-%d') # 2.datetime时间的加减 v1 = datetime.strptime('2011-11-11','%y-%m-%d') v2 = v1 - timedelta(days=140) # 再转换成字符串 date = v2.strftime('%y-%m-%d') # 3.时间戳和datetime的相互转换 # 时间戳转换成datetime格式:fromtimestamp ctime = time.time() v1 = datetime.fromtimestamp(ctime) # datetime格式转换成时间戳:timestamp v1 = datetime.now() val = v1.timestamp()
- shutil
用途:删除、重命名、压缩、解压等
shutil.rmtree(path):删除目录
# 删除目录 import shutil shutil.rmtree(path)
- shutil.move:重命名
# 重命名 import shutil shutil.move('test','ttt')
- shutil.make_archive:压缩文件
# 压缩文件 import shutil shutil.make_archive('zzh','zip','d:\code\s21day16\lizhong')
- shutil.unpack_archive:解压文件
# 解压文件 import shutil shutil.unpack_archive('zzh.zip',extract_dir=r'd:\code\xxxxxx\xxxx',format='zip')
- 示例
import os import shutil from datetime import datetime ctime = datetime.now().strftime('%y-%m-%d-%h-%m-%s') # 1.压缩lizhongwei文件夹 zip # 2.放到到 code 目录(默认不存在) # 3.将文件解压到d:\x1目录中。 if not os.path.exists('code'): os.makedirs('code') shutil.make_archive(os.path.join('code',ctime),'zip','d:\code\s21day16\lizhongwei') file_path = os.path.join('code',ctime) + '.zip' shutil.unpack_archive(file_path,r'd:\x1','zip')
- json
json.dumps()补充:
字典或列表中如果有中文,序列化时,如果想保留中文显示
import json v = {'k1':'alex','k2':'李杰'} val = json.dumps(v,ensure_ascii = false)
- json.dump:打开文件,序列化后,写入文件
import json v = {'k1':'alex','k2':'李杰'} f = open('x.txt',mode='w',encoding='utf-8') val = json.dump(v,f) print(val) f.close()
- json.load:打开文件,读取文件内容
import json v = {'k1':'alex','k2':'李杰'} f = open('x.txt',mode='r',encoding='utf-8') data = json.load(f) f.close() print(data,type(data))
- pickle
- pickle与json的区别
- json
- 优点:所有语言通用
- 缺点:只能序列化基本的数据类型 list/dict 等
- pickle
- 优点:python中所有的东西都能被他序列化(socket对象)
- 缺点:序列化的内容只有python认识
- json
- pickle.dumps:序列化
- 序列化后的东西不可读
- pickle.loads:反序列化
# 序列化 v = {1,2,3,4} val = pickle.dumps(v) print(val) # 反序列化 data = pickle.loads(val) print(data,type(data))
pickle.dump:写入文件(注意:mode='wb')
pickle.load:读取文件(注意:mode='rb')
# 写入文件 v = {1,2,3,4} f = open('x.txt',mode='wb') val = pickle.dump(v,f) f.close() # 读取文件 f = open('x.txt',mode='rb') data = pickle.load(f) f.close() print(data)
- 补充知识点:字节类型(bytes)
v1 = '李杰' """ 名称:字符串类型 内部:unicode 类型:<class 'str'> """ v2 = v1.encode('utf-8') """ 名称:字节类型 内部:其他编码(utf-8/gbk等) 类型:<class 'bytes'> """ # 注意:json序列化后是字符串类型,pickle序列化后是字节类型
1.3 模块的调用
1.模块的基本导入及调用:导入xxx.py文件
- 方式一
# 导入模块,加载此模块中所有的值到内存。 import xxx # 调用模块中的函数 xxx.func()
- 方式二
# 导入xxx.py中的func和show from xxx import func,show # 导入xxx.py中的所有值 from xxx import * # 调用模块中的函数 func()
- 方式三
# 如果有重名情况,就导入时起一个别名 # 导入xxx.py中的func,并起一个别名为f from xxx import func as f # 调用模块中的函数 f()
- 总结
- 导入:import 模块,调用:模块.函数()
- 导入:from 模块 import 函数,调用:函数()
- 导入:from 模块 import 函数 as 别名,调用:别名()
- 知识点:
- as:起别名
- *:代表全部
- 导入文件夹中的py文件及调用:导入yyy文件夹中的xxx.py文件
- 方式一
# 导入模块 import yyy.xxx # 调用模块中的函数 xxx.func()
- 方式二
# 导入模块 from yyy import xxx # 调用模块中的函数 xxx.func()
- 方式三
# 导入模块 from yyy.xxx import func # 调用模块中的函数 func()
- 总结
- 模块和要执行的py文件在同一目录 且 需要 模块中的很多功能时,推荐用:
- 导入:import 模块,调用:模块.函数()
- 其他推荐:
- 导入:from 模块 import 模块,调用:模块.函数()
- 导入:from 模块.模块 import 函数,调用:函数()
- 导入:from 模块 import 模块,调用:模块.函数()