Python学习笔记:day16 模块基础知识(timedatetimejsonpicleshutillogging)

Posted 我的名字很长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习笔记:day16 模块基础知识(timedatetimejsonpicleshutillogging)相关的知识,希望对你有一定的参考价值。

今日内容

  • 模块基础知识
  • 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

以上是关于Python学习笔记:day16 模块基础知识(timedatetimejsonpicleshutillogging)的主要内容,如果未能解决你的问题,请参考以下文章

Python100天学习笔记Day16 Python基础重要知识点

Python学习笔记day1基础介绍

Python学习笔记——Day5(转载)

python学习day16 模块

python学习笔记day5——常用模块学习

python学习笔记-day6- sys模块, 导入模块的方法