python笔记16
1.今日内容
- 模块基础知识
- time/datetime
- json/picle
- shutil
- logging
- 其他
2.内容回顾和补充
2.1模块(类库)
- 内置
- 第三方
- 自定义
面试题:
- 列举常用内置模块:json / time / os/ sys
2.2 定义模块
定义模块时可以把一个py文件或一个文件夹(包)当作一个模块,以方便于以后其他py文件的调用 。
对于包(文件夹)的定义:
py2:文件见中必须有 _ _init _ _.py 。手工创建此文件即可。
在pycharm中手工创建python package时候,默认自动会在这个文件中创建--init--.py文件。
py3:不需要 _ init _.py .
推荐大家以后写代码时,都要加上此文件。
2.3 模块的调用
2.3.1 示例一
# lizhongwei.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
def show():
print('我司里种种')
def func():
pass
print(456)
# 导入模块,加载此模块中所有的值到内存。所以此时先打印出:456。后打印该代码块下面的123。
import lizhongwei
print(123)
# 调用模块中的函数
lizhongwei.func()
# 导入模块
from lizhongwei import func,show
from lizhongwei import func
from lizhongwei import show
from lizhongwei import *
func()#from导入方法,直接使用函数。
# 导入模块
from lizhongwei import func as f#别名法,防止func函数与现有代码中函数重名。
def func():
print(123)
f()
导入模块:
- import 模块 使用方式:模块.函数()
- from 模块 import 函数 使用方式:函数()
- from 模块 import 函数 as 别名 使用方式:别名()
2.3.2 示例二
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的作用是什么?sys.path默认在py的安装目录和执行文件当前所在的目录。
1、如果要增加非py安装目录下,需要append非py安装目录。sys.path.append('path')。
然后在引用目录下的py文件就可以引用成功:如:import page
2、如果page的上级目录和执行的文件在同一个目录(lib),这样引用也可以:
from lib import page
3、如果page和执行的py文件在同一个目录下,直接引用即可。
import page
练习题
将父级目录加入sys.path中,方便后期调用此父级下的代码块。
import sys
v=sys.path
print(v)
import os
print(__file__)
print(os.path.dirname(__file__))
print(os.path.abspath(__file__))
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(DIR)
print(sys.path)
===
['C:\\python\\venv', 'C:\\python', 'C:\\python\\python36\\python36.zip', 'C:\\python\\python36\\DLLs', 'C:\\python\\python36\\lib', 'C:\\python\\python36', 'C:\\python\\python36\\lib\\site-packages', 'C:\\python\\PyCharm 2019.2.2\\PyCharm 2018.2.1\\helpers\\pycharm_matplotlib_backend']
C:/python/venv/day15.py
C:/python/venv
C:\python\venv\day15.py
C:\python
['C:\\python\\venv', 'C:\\python', 'C:\\python\\python36\\python36.zip', 'C:\\python\\python36\\DLLs', 'C:\\python\\python36\\lib', 'C:\\python\\python36', 'C:\\python\\python36\\lib\\site-packages', 'C:\\python\\PyCharm 2019.2.2\\PyCharm 2018.2.1\\helpers\\pycharm_matplotlib_backend', 'C:\\python']
2.4 内置模块
os
sys
time
json
dumps
- dump(v,f)#将v写入文件f中。
loads
- print(load(f)),打印文件中内容。
注意:
字典或列表中如有中文,序列化时想要保留中文显示:
v = {'k1':'alex','k2':'李杰'} import json
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') data = json.load(f)
f.close() print(data,type(data))
haslib
random
getpass
shutil
copy
3. 今日内容
3.1 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,type(data))
"""
"""
#序列化函数(json做不到):
def f1():
print('f1')
v1 = pickle.dumps(f1)
print(v1)
v2 = pickle.loads(v1)
v2()
"""
# #################### dump/load ######################
# v = {1,2,3,4}
# f = open('x.txt',mode='wb')
# val = pickle.dump(v,f)
# f.close()
# f = open('x.txt',mode='rb')
# data = pickle.load(f)
# f.close()
# print(data)
==================
encording后称作字节
json:得出来的是字符串
pickle:得出来的是字符串
3.2 shutil 模块
import shutil
# 删除目录
# shutil.rmtree('test')
# 重命名,文件和目录都可以
# shutil.move('test','ttt')
# 压缩文件
# shutil.make_archive('zzh','zip','D:\code\s21day16\lizhong')
# 解压文件,有目录直接解压,无目录,则直接创建
# shutil.unpack_archive('zzh.zip',extract_dir=r'D:\code\xxxxxx\xxxx',format='zip')
示例
import os
import shutil
from datetime import datetime
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\s21day16\lizhongwei')
file_path = os.path.join('code',ctime) + '.zip'
shutil.unpack_archive(file_path,r'D:\x1','zip')
3.3 time&datetime
UTC/GMT:世界时间
本地时间:本地时区的时间。
3.3.1 time模块
- time.time() ,时间戳:1970-1-1 00:00
- time.sleep(10),等待秒数。
- time.timezone
# https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=4ZwIFHM6iw==&tip=1&r=-781028520&_=1555559189206
3.3.2 datetime模块
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
from datetime import datetime,timezone,timedelta
# ######################## 获取datetime格式时间 ##############################
"""
v1 = datetime.now() # 当前本地时间
print(v1)
tz = timezone(timedelta(hours=7)) # 当前东7区时间
v2 = datetime.now(tz)
print(v2)
v3 = datetime.utcnow() # 当前UTC时间
print(v3)
"""
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
# ######################## 把datetime格式转换成字符串 ##############################
# v1 = datetime.now()
# print(v1,type(v1))
# 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')
# v2 = v1 - timedelta(days=140)
# date = v2.strftime('%Y-%m-%d')
# print(date)
# ######################## 时间戳和datetime关系 ##############################
# ctime = time.time()
# print(ctime)
# v1 = datetime.fromtimestamp(ctime)
# print(v1)
# v1 = datetime.now()
# val = v1.timestamp()
# print(val)
3.4异常处理
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'])
异常处理结构:
try:
pass
except Exception as e:
pass
python笔记16的更多相关文章
- Python笔记 #16# Pandas: Operations
10 Minutes to pandas #Stats # shift 这玩意儿有啥用??? s = pd.Series([1,5,np.nan], index=dates).shift(0) # s ...
- python笔记 - day5
python笔记 - day5 参考: http://www.cnblogs.com/wupeiqi/articles/5484747.html http://www.cnblogs.com/alex ...
- python笔记 - day3
python笔记 - day3 参考:http://www.cnblogs.com/wupeiqi/articles/5453708.html set特性: 1.无序 2.不重复 3.可嵌套 函数: ...
- python笔记之调用系统命令
python笔记之调用系统命令 目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数, ...
- guxh的python笔记一:数据类型
1,基本概念 1.1,数据类型 基本数据类型:字符串,数字,布尔等 引用数据类型:相对不可变(元组),可变(列表,字典,集合等) 基本数据类型存放实际值,引用数据类型存放对象的地址(即引用) ==:判 ...
- s21day11 python笔记
s21day11 python笔记 一.函数小高级 函数名可以当作变量来使用 #示例一: def func(): print(123) func_list = [func, func, func] # ...
- s21day08 python笔记
s21day08 python笔记 一.现阶段所有内容回顾 以后把每天的笔记直接补充到python学习 二.进制 对于计算机而言无论是文件存储 / 网络传输输入本质上都是:二进制(0101010101 ...
- s21day01 python笔记
s21day01 python笔记 一.计算机基础 计算机的初步认识 用户:人 软件:QQ.浏览器等 解释器/编译器/虚拟机:java解释器.python解释器等 操作系统 硬件:CPU.内存.硬盘. ...
- python笔记-1(import导入、time/datetime/random/os/sys模块)
python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...
随机推荐
- ng-zorro-antd中踩过的坑
ng-zorro-antd中踩过的坑 前端项目中,我们经常会使用阿里开源的组件库:ant-design,其提供的组件已经足以满足多数的需求,拿来就能直接用,十分方便,当然了,有些公司会对组件库进行二次 ...
- 集合排序Comparable和Comparator有什么区别?
Comparable和Comparator兄弟俩长得是真像.但是,需要注意下,使用中它们还是有不少区别的.下面,就一探究竟吧. 一.Comparator 做过集合排序的童鞋应该知道,可以使用Colle ...
- (一)unittest介绍
一.unittest框架四要素: test fixture 测试脚手架 test case 测试用例 test suite 一系列的测试用例,测试套件,用于组合一系列测试用例 test runner ...
- ipaclient 4.5.4 requires jinja2, which is not installed. rtslib-fb 2.1.63 has requirement pyudev>=0.16.1, but you'll have pyudev 0.15 which is incompatible. ipapython 4.5.4 has requirement dnspython>=
- Java并发-几种常见的锁
这几天在忙着投提前批内推,前面看的好多东西没有总结,正好这两天补上顺带复习一下 synchronized:Java之重型锁
- C++ | C++ 基础知识 | 结构、联合与枚举
1. 结构 1.0 结构 数组是相同类型元素的集合,相反,struct 是任意类型元素的集合. 代码例子: struct Address { const char* name; int number; ...
- python基础操作以及变量运用
今天学习关于pycharm的操作以及变量的知识 1.关于pycharm的基本操作,作为一个小白,仪式感还是要有 在基础界面上新建然后打印hello world,也是对python的一种尊重吧 2.关于 ...
- python递归(函数)
递归:一个过程或函数调用自身的一种方法. 1. 效果图 2. 代码 def factorial(n): ''' 该函数用来求任意数的阶乘 参数: n 要求阶乘的数字 ''' # 基线条件 判断n是否为 ...
- LeetCode刷题预备知识(二)
Python四大数据结构的属性及方法 在LeetCode刷题预备知识一中我们掌握了常见的内置函数,和四大数据结构的基本概念: 但只掌握这些还远远不够,我们还需了解四大数据结构的属性及方法才能更高效快速 ...
- Iaas/paas/saas 三种模式分别都是做什么?
任何一个在互联网上提供其服务的公司都可以叫做云计算公司.其实云计算分几层的,分别是Infrastructure(基础设施)-as-a- Service,Platform(平台)-as-a-Servic ...