今日内容
- 模块基础知识
- time/datetime
- json/picle
- shutil
- logging
- 其他
内容回顾和补充
模块(类库)
- 内置
- 第三方
- 自定义
面试题:
- 列举常用第三方模块:json/time/ /os/sys
定义模块
定义模块时可以把一个py文件或一个文件夹(包)当作一个模块,以方便于以后其他py文件的调用
对于包的定义:
- py2:文件夹中必须有_ _ ini t_ _.py文件
- py3:不需要_ _ ini t_ _.py文件
模块的调用
示例一
def show():
print('卫斯理作者')
def func():
pass
print(456)
#导入模块
import lizhongwei
print(123)
#调用模块中的函数
lizhongwei.func()
导入模块
from lizhongwei import func,show
from lizhongwei import *
from lizhongwei import func
func()
#导入模块
from lizhongwei import func as f
def func():
print(123)
f()
导入模块:
- import 模块 模块 函数()
- from 模块 import 函数 函数()
- from 模块 import 函数 as 别名 别名()
示例二:
lizhong
- jd.py
- pdd.py
- tb.py
包.py
import lizhong.jd
lizhong.jd.f1()
from lizhong import jd
jd.f1()
from lizhong.jd import f1
f1()
总结
- 模块和要执行的py文件在同一目录 且 需要模块中很多功能时,推荐用:import 模块
- 其他推荐:from 模块 import 模块 模块.函数()
- 其他推荐:from 模块.模块 import 函数 函数()
注意:sys.path的作用?
示例
import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
内置模块
-
os
-
sys
-
time
-
json
-
dumps
-
loads
-
注意
- 字典或列表中如有中文,序列化时想要保留中文显示
import json v = {'k1':'alex','k2':'李杰'} val = json.dumps(v,ensure_ascii=False) print(val)
-
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()
-
load
import json v = {'k1':'alex','k2':'李杰'} f = open('x.txt',mode='r',encoding='utf-8') val = load(f) f.close() print(val,type(val))
-
-
hashlib
-
random
-
getpass
-
shutil
-
copy
今日内容
json和pickle
-
json,优点:所有语言通用;缺点只能序列化基本的数据类型 list/dict/int
-
pickle,优点:python中所有的东西都能被序列化(socket对象);缺点:序列化的内容只有Python认识,其他语言不认识。
import pickle ###dumps/loads ''' v = {1,2,3,4} val = pickle.dumps(v) print(val) data = pickle.loads(val) print(data) ''' ''' def f1(): pass v1 = pickle.dumps(f1) print(v1) v2 = pickle.loads(v1) print(v2) v2() ''' ###dump/load v = {1,2,3,4} f1 = open('x.txt',mode='wb') val = pickle.dump(v,f1) f1.close() f = open('x.txt',mode='rb') data = pickle.load(f) f.close() print(data)
shutil模块
import shutil
#删除目录
# shutil.rmtree('test')
#重命名
# shutil.move('x.txt','xxx.txt')
#压缩文件
# shutil.make_archive('zzh','zip','D:\code\s21day16')
#解压文件
shutil.unpack_archive('zzh.zip',extract_dir=r'D:\code\xxx,format='zip')
示例:
import os
import shutil
from datetime import datetime
#1.压缩lizhongwei文件夹zip
#2.放到code目录(默认不存在)
#3.将文件解压到D:\x1目录中。
ctime = datetime.now().strftime('%Y-%m-%d-%H-%M-%S')
print(ctime)
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')
time & datetime
time模块
- time.time() ,时间戳:1970-1-1 00:00
- time.sleep(10),等待秒数
- time.timezone
datetime模块
import time
from datetime import datetime,timezone,timedelta
###获取datetime格式时间
'''
v1 = datetime.now() #当前本地时间
print(v1)
v2 = datetime.utcnow() #当前UTC时间
print(v2)
tz = timezone(timedelta(hours=7)) #当前东7区时间
v3 = datetime.now(tz)
print(v3)
'''
###把datetime格式转换成字符串
# v1 = datetime.now()
# print(v1,type(v1))
# val = v1.strftime('%Y-%m-%d %H:%M:%S')
# val = v1.strftime('%y-%m-%d %H:%M:%S')
# print(val)
###字符串转成datetime
v1 = datetime.strptime('2011-11-11','%Y-%m-%d')
print(v1,type(v1))
###datetime时间的加减
v1 = datetime.strptime('2011-11-11','%Y-%m-%d')
print(v1,type(v1))
v2 = v1 + timedelta(days=140)
print(v2)
###时间戳和datetime关系
ctime = time.time()
print(ctime)
v1 = datetime.fromtimestamp(ctime)
print(v1)
logging
异常处理
'''
try:
val = input('请输入数字:')
num = int(val)
except Exception as e:
print('操作异常')
'''
# import requests
# try:
# ret = requests.get('http://www.baidu.com')
# print(ret.text)
# except Exception as e:
# print('请求异常')
def func(a):
try:
a.strip()
except Exception as e:
pass
return False
# v = func('alex')
v = func([11,22,33])
# print(v)
if not v:
print('函数执行失败')
else:
print('结果是',v)
练习题
#1.写函数,函数接收一个列表,请将列表中的元素每个都+100
def func(arg):
result = []
for item in arg:
if item.isdecimal():
result.append(int(item) + 100)
return result
#2.写函数去接收一个列表,列表中都是url,请访问每个地址并获取结果。
import requests
def func(url_list):
result = []
try:
for url in url_list:
response = requests.get(url)
result.append(response.text)
except Exception as e:
pass
erturn result
def func2(url_list):
result = []
for url in url_list:
try:
response = requests.get(url)
result.append(response.text)
except Exception as e:
pass
erturn result
func(['http://www.baidu.com','http://www.google.com','http://www.bing.com'])
总结
函数高级 5*
- 嵌套
- 装饰器
模块分类和自定义 4*
- 内置模块
- os
- sys
- 第三方
- requests
- xlrd
- 自定义模块
- 文件
- 文件夹 + init.py(包)
导入模块
- sys.path
- 导入
- import
- from xx.xxx import xx
异常处理
try:
pass
except Exception as e:
pass