day16模块_异常处理
1.今日内容
-
模块基础知识
-
time/datetime
-
json/picle
-
-
loggingr
-
其他
内容回顾和补充
3.1模块(类库)
-
内置
-
第三方
-
自定义
面试题:
-
列举常用内置模块:json/time /os/sys
3.2定义模块
定义模块时可以把一个文件或一个文件夹(包)当作一个模块,以方便于以后其他py文件的调用。
对于包的定义:
-
py2:文件见中必须有_ _init _ _.py。
-
py3:不需要_ _init _ _.py
推荐大家以后写代码时,都要加上此文件。
3.3模块的调用
3.3.1示例一
def show():
print("lsdkf")
def func():
pass
print(456)
#导入模块,加载此模块中所有的值到内存。
import lizhongwei
?
print(123)
#调用模块中的函数
lizhongwei.func()
# 导入模块
from lizhongwei import func as f
?
def func():
print(123)
f()
导入模块:
-
import模块
-
from 模块import函数
-
from 模块import函数as别名
3.3.2示例二
lizohng
-jd.py
-pdd.py
-tb.py
包.py
import lizhong.jd
lizhong.jd.f1()
from lizhong import jd
jd.f1()
总结
-
模块和要执行的朋友文件在同以目录 需要 模块中的很多功能时,推荐用:import模块
-
其他推荐:from模块import模块
-
其他推荐:from模块.模块 import模块
import os
import sys
base_dir = os.path.dirname (os.path.dirname(os.path.abspath(__file__)))
sys.path.append(base_dir)
3.4 内置模块
-
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="w",encoding="utf-8")
val = json.load(f)
f.close()
print(data,type(data))
-
-
haslib
-
random
-
getpass
-
shutil
-
copy
-
4.今日内容
4.1json和pickle
-
json,优点:所有语言通用;缺点:只能序列化基本的数据类型list/dict/int...
-
pickle,优点:python中所有的东西都被他序列化(socke对象);缺点:序列化的内容只有python认识。
-
dumps,转换为字符串/loads,字符串转换回
v = {1,2,3,4}
val = pickle.dumps(v)
print(val)
data = pickle.loads(val)
print(data,type(data))-
dump,直接写到文件/load,读出来转换
v = {1,2,3,4}
f = open ("x.xt",mode="wb")
val = pickle.dump(v,f)#第一个转换第二个写入
f.close
# ##################################
v = {1,2,3,4}
f = open ("x.xt",mode="rb")
data = pickle.load(f)#第一个转换第二个写入
f.close -
4.2 shutil
-
rmtree,删除目录
shutil.rmtree("test") -
move,重命名
shutil.move("zz","bb") -
make_archive,压缩文件
shutil.make_archive("zzh","zip","b:\dsf\asdf\asdf\") -
unpack_archive,解压文件
shutil.unpack_archive("zzh.zip",extract_dir=r"b:\dsf\",format="zip") -
练习题
import os
import shutil
from datetime import dateime
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\slkj\lizhongwei")
file_path = os.path.join("code",ctime)+".zip"
shutil.unjpack_arbhive(file_path,r"d:\x1","zip")
4.3 time&datetime
-
UTC/GMT:世界时间
-
本地时间:本地时区时间。
time模块
-
time.time(),时间戳:1970-1-1 00:00
-
time.sleep(10),等待秒数。
# ##############获取datetime格式时间
v1 = datetime.now() # 当前本地时间
# 当前东7区时间
tz = timezone(timedelta(hours=7))
v2 = datetime.now(tz)
v3 = datetime.utcomw()#当前UTC时间
# ##########把datetime格式转换成字符串
v1 = datetime.now()
val = v1.strftime("%Y-%m-%d %H:%M:%S")
# ##############字符串转成datetime
v1 = datetime.strptime("2011-11-11","%Y-%m-%d")
# #################datetime时间的加减
v1 = datetime.strptime("2011-11-11","%Y-%m-%d")
v2 = v1 - timedelta(days=140)
date = v2.strftime("%Y-%m-%d")
# ############### 时间戳和datetime关系
ctime = time.time()
v1 = datetime.fromtimestamp(ctime)
v1 = datetime.now()
val = v1.timestamp()
4.4异常处理
def func(c):
try:
return a.strip()
#e里面保存的是报错信息
except Exception as e:
pass
return False
v = func("alex")
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
return result