day16模块_异常处理


day16

1.今日内容

  • 模块基础知识

  • time/datetime

  • json/picle

  • shutil

  • 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