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)的主要内容,如果未能解决你的问题,请参考以下文章