今日内容
模块基础知识
time/datetime
json/picle
shutil
logging
其他
内容回顾与补充
(1)模块(类库):内置/第三方模块/自定义
面试题:列举常用内置模块:json/time/os/sys
(2)定义模块
定义模块时可以把一个py文件或一个文件夹(包)当作一个模块,以方便于以后其他py文件的调用。
对于包的定义:
py2:文件夹中必须有--init--.py
py3:不需要--init--.py
推荐大家以后写代码时,都要加上此文件。
模块的调用
示例一
#lizhongwei.py#/urn/bin/env python#-*- coding:utf-8 -*-def show(): print('123')def func(): passprint(456)
示例二
#导入模块,加载模块中所有的值到内存中import lizhongweiprint('你好')#调用模块中的函数lizhongwei.fun()#导入模块from lizhongwei import func,showfrom lizhongwei import funcfrom lizhongwei import showfrom lizhongwei import *func()#导入模块from lizhongwei import func as f:def func(): print('你好,大家好')func()f()#导入模块import 模块 #调用方法:模块.函数名()from 模块 import 函数 #调用方法:函数名()【as可以起别名/* 表示所有】from 模块 import 函数名 as 别名 #调用方法:别名()
示例三
lihao --jd.py --tb.py --pdd.py包.py#调用一import lihao.jdlihao.jd.func()#调用二from lihao import jdjd.func()#调用三from lihao.jd import funcfunc()
总结
模块和要执行的py文件在同一目录且需要模块中的很多功能时,推荐使用:import 模块
其他推荐1:from 模块1 import 模块2 #调用方法:模块2.函数名()
其他推荐2:from 模块1.模块2 import 函数名 #调用方法:函数名()
#注意:sys.path的作用是什么:
#模块导入时默认加载的路径列表
练习题
import osimport sysBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))print(BASE_DIR)import client.pyimport x.pyfrom lib import jbjd.func()
内置模块
(1)random
(2)hashlib
(3)getpass
(4)time
(5)os
(6)sys
(7)json dumps/loads/dump/load
#注意:列表或字典中如有中文,序列化时想要保留中文显示:
示例一:json.dumps():序列化为json格式特殊的字符串,如果中文想正常展示
v = {'k1':'alex','k2':'你好,大家好'}import jsonval1 = json.dumps(v)val2 = json.dumps(v,ensure_ascii=False)print(val1,val2)#输出结果为:{"k1": "alex", "k2": "\u4f60\u597d\uff0c\u5927\u5bb6\u597d"} {"k1": "alex", "k2": "你好,大家好"}
示例二:json.dump():将字符串写入到一个文件中
import jsonv = {'k1':'alex','k2':'你好,大家好'}f = open('a.txt',mode = 'w',encoding = 'utf-8')val = json.dump(v,f)print(val) #输出结果为None,说明json.dump()函数没有返回值f.close()#写文a.txt中的内容为:{"k1": "alex", "k2": "\u4f60\u597d\uff0c\u5927\u5bb6\u597d"},说明得到的是unicode编码
示例三:json.load():反序列化一个文件即读一个文件
import jsonv = {'k1':'alex','k2':'你好,大家好'}f = open('a.txt',mode = 'r',encoding = 'utf-8')val = json.load(f)f.close()print(val,type(val)) #输出结果为{'k1': 'alex', 'k2': '你好,大家好'} <class 'dict'>
示例四:介绍json中dump与load的使用
######################dumps/loads###########################import picklev = {1,2,3,4}val = pickle.dumps(v)print(val,type(val))#b'\x80\x04\x95\r\x00\x00\x00\x00\x00\x00\x00\x8f\x94(K\x01K\x02K\x03K\x04\x90.' <class 'bytes'>#输出的是二进制字节data = pickle.loads(val)print(data,type(data)) #输出结果为:{1, 2, 3, 4} <class 'set'>#pickle可以序列化函数示例def f1(): print('f1')v1 = pickle.dumps(f1)print(v1)v2 = pickle.loads(v1)v2()######################dump/load###########################import picklev = {1,2,3,4}f = open('x.txt',mode = 'wb')val = pickle.dump(v ,f )f.close()print(val ,type(val))#生成一个x.txt文件,val = Nonef = open('x.txt', mode = 'rb')data = pickle.load(f)f.close()print(data,type(data)) #输出结果为:{1, 2, 3, 4} <class 'set'>
(8)shutil
import shutil#删除目录shutil.rmtree('要删除的路径')#重命名 将test文件夹重命名为tttshutil.move('test','ttt')#压缩文件shutil.make_archive('被压缩后的文件名','要压缩成的文件类型','要压缩的文件')#示例:shutil.make_archive('zzh','zip','D:\code\s21day16\lizhong')#解压文件shutil.unpack_archive('要解压的文件',extract_dic='要解压到那个目录,如果目录不存在就自动创建',format='要解压的文件类型')#示例:shutil.unpack_archive('zzh.zip',extract_dir=r'D:\code\xxxxxx\xxxx',format ='zip')
示例:
import osimport shutilfrom datetime import datetimectime = datetime.now().strftime('%Y-%m-%d-%H-%M-%S')print(ctime) #输出结果为:2020-02-27-10-52-40#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_name = os.path.join('code',ctime)+'.zip'shutil.unpack_archive('file_name',extract_dir=r'd:\x1',format ='zip')
(9)copy
今日内容
1.json和pickle
2.shutil模块
3.time&datetime
UTC/GMT:世界时间
本地时间:本地时区的时间
time模块
import time v=time.time() #时间戳:1582773401.9662914 print(v) time.sleep(10) #等待10秒钟 time.timezone #时区
datetime
示例:
import timefrom datetime import datetime,timezone,timedelta#########################获取datetime格式时间##########################################"""v1 = datetime.now() #获取当前时间print(v1) #输出内容为:2020-02-27 11:24:57.662815v2 = timezone(timedelta(hours=7)) #当前东7区时间v3 = datetime.now(v2)print(v2,v3) #输出内容为:UTC+07:00 2020-02-27 10:24:57.662815+07:00v4 = datetime.utcnow() #获取utc时间print(v4) #输出内容为:2020-02-27 03:24:57.662815"""#########################把datetime格式转换为字符串#####################################"""v1 = datetime.now() #获取当前时间print(v1,type(v1)) #输出内容为:2020-02-27 11:28:25.304218 <class 'datetime.datetime'>val = v1.strftime("%Y-%m-%d %H:%M:%S")print(val,type(val)) #输出内容为:2020-02-27 11:28:25 <class 'str'>"""#########################把字符串转换为datetime类型#####################################"""v1 = datetime.strptime('2011-11-11','%Y-%m-%d')print(v1,type(v1)) #2011-11-11 00:00:00 <class 'datetime.datetime'>"""#########################datetime时间的加减#####################################"""v1 = datetime.strptime('2011-11-11','%Y-%m-%d')v2 = v1 - timedelta(days=140)print(v2,type(v2)) #输出结果为:2011-06-24 00:00:00 <class 'datetime.datetime'>v3 = v2.strftime('%Y-%m-%d')print(v3,type(v3)) #输出结果为:2011-06-24 <class 'str'>"""#########################时间戳和datetime关系#####################################'''ctime = time.time()print(ctime) #输出内容为:1582775403.987247v1 = datetime.fromtimestamp(ctime)print(v1) #输出内容为:2020-02-27 11:50:03.987247v2 = datetime.now()val = v2.timestamp()print(val,type(val)) #输出内容为:1582775403.987247 <class 'float'>'''
4.logging
5.异常处理
示例一:
try: val = input("请输入数字") num = int(val)except Exception as e : print("操作异常")
示例二:
import requeststry: ret = requests.get("http://www.google.com") print(ret.text)except Exception as e: print("请求异常")
示例三:
def func(a): try: return a.strip() except Exception as e: pass return Falsev = func('alex')if not v : print('函数执行失败')else: print('结果是:',v)
练习题:
# 1. 写函数,函数接受一个列表,请将列表中的元素每个都 +100def func(arg): result = [] for item in arg: if item.isdecimal(): result.append(int(item) +100) return result# 2. 写函数去,接受一个列表。列表中都是url,请访问每个地址并获取结果。import requestsdef func(url_list): result = [] try: for url in url_list: response= requests.get(url) result.append(response.text) except Exception as e: pass return resultdef func2(url_list): result = [] for url in url_list: try: response= requests.get(url) result.append(response.text) except Exception as e: pass return resultfunc(['http://www.baidu.com','http://www.google.com','http://www.bing.com'])
总结
高阶函数(5*)
嵌套/装饰器
模块分类和定义 (4*)
内置模块:time/json.......
第三方模块:request/xlrd
自定义模块:文件/文件夹+init.py【包】
导入模块
sys.path
导入:import xx / from xx.xxx import xxxx
异常处理
try:
pass
excep Exception as e:
pass
来源:https://www.cnblogs.com/limin1027/p/12368613.html