20200226----python学习第16天
Posted limin1027
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20200226----python学习第16天相关的知识,希望对你有一定的参考价值。
今日内容
模块基础知识
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():
pass
print(456)
示例二
#导入模块,加载模块中所有的值到内存中
import lizhongwei
print(‘你好‘)
#调用模块中的函数
lizhongwei.fun()
#导入模块
from lizhongwei import func,show
from lizhongwei import func
from lizhongwei import show
from 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.jd
lihao.jd.func()
#调用二
from lihao import jd
jd.func()
#调用三
from lihao.jd import func
func()
总结
模块和要执行的py文件在同一目录且需要模块中的很多功能时,推荐使用:import 模块
其他推荐1:from 模块1 import 模块2 #调用方法:模块2.函数名()
其他推荐2:from 模块1.模块2 import 函数名 #调用方法:函数名()
#注意:sys.path的作用是什么:
#模块导入时默认加载的路径列表
练习题
import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(BASE_DIR)
import client.py
import x.py
from lib import jb
jd.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 json
val1 = json.dumps(v)
val2 = json.dumps(v,ensure_ascii=False)
print(val1,val2)
#输出结果为:{"k1": "alex", "k2": "u4f60u597duff0cu5927u5bb6u597d"} {"k1": "alex", "k2": "你好,大家好"}
示例二:json.dump():将字符串写入到一个文件中
import json
v = {‘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": "u4f60u597duff0cu5927u5bb6u597d"},说明得到的是unicode编码
示例三:json.load():反序列化一个文件即读一个文件
import json
v = {‘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 pickle
v = {1,2,3,4}
val = pickle.dumps(v)
print(val,type(val))
#b‘x80x04x95 x00x00x00x00x00x00x00x8fx94(Kx01Kx02Kx03Kx04x90.‘ <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 pickle
v = {1,2,3,4}
f = open(‘x.txt‘,mode = ‘wb‘)
val = pickle.dump(v ,f )
f.close()
print(val ,type(val))
#生成一个x.txt文件,val = None
f = 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文件夹重命名为ttt
shutil.move(‘test‘,‘ttt‘)
#压缩文件
shutil.make_archive(‘被压缩后的文件名‘,‘要压缩成的文件类型‘,‘要压缩的文件‘)
#示例:
shutil.make_archive(‘zzh‘,‘zip‘,‘D:codes21day16lizhong‘)
#解压文件
shutil.unpack_archive(‘要解压的文件‘,extract_dic=‘要解压到那个目录,如果目录不存在就自动创建‘,format=‘要解压的文件类型‘)
#示例:
shutil.unpack_archive(‘zzh.zip‘,extract_dir=r‘D:codexxxxxxxxxx‘,format =‘zip‘)
示例:
import os
import shutil
from datetime import datetime
ctime = 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:codes21day16lizhongwei‘)
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 time
from datetime import datetime,timezone,timedelta
#########################获取datetime格式时间##########################################
"""
v1 = datetime.now() #获取当前时间
print(v1) #输出内容为:2020-02-27 11:24:57.662815
v2 = timezone(timedelta(hours=7)) #当前东7区时间
v3 = datetime.now(v2)
print(v2,v3) #输出内容为:UTC+07:00 2020-02-27 10:24:57.662815+07:00
v4 = 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.987247
v1 = datetime.fromtimestamp(ctime)
print(v1) #输出内容为:2020-02-27 11:50:03.987247
v2 = 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 requests
try:
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 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
def func2(url_list):
result = []
for url in url_list:
try:
response= requests.get(url)
result.append(response.text)
except Exception as e:
pass
return result
func([‘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
以上是关于20200226----python学习第16天的主要内容,如果未能解决你的问题,请参考以下文章