s21day16 python笔记

一、模块

1.1 模块的定义

  1. 模块的定义

    • 可以吧一个py文件或一个文件夹(包)当作一个模块,以便于以后其他py文件的调用
  2. 包的定义(python2与python3的区别七)
    • python2:文件夹中必须有_ _ init _ _.py文件
    • python3:不需要有_ _ init _ _.py文件
    • 建议:推荐以后写代码,无论是python2还是python3,都要加上此文件

1.2 模块分类(内置模块补充)

  1. time:时间模块
  • time.time:时间戳(从1970年到现在经历的秒数)
# https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=4ZwIFHM6iw==&tip=1&r=-781028520&_=1555559189206
  • time.sleep:等待的秒数

  • time.timezone

  1. datetime:时间模块
  • datetime.now():当前本地时间

  • datetime.utcnow():当前UTC时间

import time
from datetime import datetime,timezone,timedelta
# 获取datetime格式时间
# 当前本地时间
v1 = datetime.now() 

# 当前东7区时间
tz = timezone(timedelta(hours=7))
v2 = datetime.now(tz)

# 当前UTC时间
v3 = datetime.utcnow()
print(v3)
  • 相互转换
import time
from datetime import datetime,timedelta
# 1.datetime格式和字符串的相互转换
# 把datetime格式转换成字符串:strftime
v1 = datetime.now()
val = v1.strftime("%Y-%m-%d %H:%M:%S")
# 字符串转成datetime格式:strptime
v1 = datetime.strptime('2011-11-11','%Y-%m-%d')

# 2.datetime时间的加减
v1 = datetime.strptime('2011-11-11','%Y-%m-%d')
v2 = v1 - timedelta(days=140)
# 再转换成字符串
date = v2.strftime('%Y-%m-%d')

# 3.时间戳和datetime的相互转换
# 时间戳转换成datetime格式:fromtimestamp
ctime = time.time()
v1 = datetime.fromtimestamp(ctime)
# datetime格式转换成时间戳:timestamp
v1 = datetime.now()
val = v1.timestamp()
  1. shutil
  • 用途:删除、重命名、压缩、解压等

  • shutil.rmtree(path):删除目录

# 删除目录
import shutil
shutil.rmtree(path)
  • shutil.move:重命名
# 重命名
import shutil
shutil.move('test','ttt')
  • shutil.make_archive:压缩文件
# 压缩文件
import shutil
shutil.make_archive('zzh','zip','D:\code\s21day16\lizhong')
  • shutil.unpack_archive:解压文件
# 解压文件
import shutil
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')
  1. json
  • json.dumps()补充:

  • 字典或列表中如果有中文,序列化时,如果想保留中文显示

import json
v = {'k1':'alex','k2':'李杰'}
val = json.dumps(v,ensure_ascii = False)
  • json.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()
  • json.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))
  1. pickle
  • pickle与json的区别

    • json

      • 优点:所有语言通用
      • 缺点:只能序列化基本的数据类型 list/dict 等
    • pickle
      • 优点:python中所有的东西都能被他序列化(socket对象)
      • 缺点:序列化的内容只有python认识
  • pickle.dumps:序列化
    • 序列化后的东西不可读
  • pickle.loads:反序列化
# 序列化
v = {1,2,3,4}
val = pickle.dumps(v)
print(val)

# 反序列化
data = pickle.loads(val)
print(data,type(data))
  • pickle.dump:写入文件(注意:mode='wb')

  • pickle.load:读取文件(注意:mode='rb')

# 写入文件
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)
  • 补充知识点:字节类型(bytes)
v1 = '李杰'
"""
名称:字符串类型
内部:unicode
类型:<class 'str'>
"""
v2 = v1.encode('utf-8')
"""
名称:字节类型
内部:其他编码(utf-8/gbk等)
类型:<class 'bytes'>
"""
# 注意:json序列化后是字符串类型,pickle序列化后是字节类型

1.3 模块的调用

1.模块的基本导入及调用:导入XXX.py文件

  • 方式一
# 导入模块,加载此模块中所有的值到内存。
import XXX

# 调用模块中的函数
XXX.func()
  • 方式二
# 导入XXX.py中的func和show
from XXX import func,show

# 导入XXX.py中的所有值
from XXX import *

# 调用模块中的函数
func()
  • 方式三
# 如果有重名情况,就导入时起一个别名
# 导入XXX.py中的func,并起一个别名为f
from XXX import func as f

# 调用模块中的函数
f()
  • 总结

    • 导入:import 模块,调用:模块.函数()
    • 导入:from 模块 import 函数,调用:函数()
    • 导入:from 模块 import 函数 as 别名,调用:别名()
    • 知识点:
      • as:起别名
      • *:代表全部
  1. 导入文件夹中的py文件及调用:导入YYY文件夹中的XXX.py文件
  • 方式一
# 导入模块
import YYY.XXX

# 调用模块中的函数
XXX.func()
  • 方式二
# 导入模块
from YYY import XXX

# 调用模块中的函数
XXX.func()
  • 方式三
# 导入模块
from YYY.XXX import func

# 调用模块中的函数
func()
  1. 总结
  • 模块和要执行的py文件在同一目录 且 需要 模块中的很多功能时,推荐用:

    • 导入:import 模块,调用:模块.函数()
  • 其他推荐:
    • 导入:from 模块 import 模块,调用:模块.函数()
    • 导入:from 模块.模块 import 函数,调用:函数()

s21day16 python笔记的更多相关文章

  1. Python笔记之不可不练

    如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...

  2. boost.python笔记

    boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...

  3. 20.Python笔记之SqlAlchemy使用

    Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...

  4. Python笔记——类定义

    Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...

  5. 13.python笔记之pyyaml模块

    Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...

  6. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  7. python笔记 - day8

    python笔记 - day8 参考: http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/wupeiqi/art ...

  8. python笔记 - day7-1 之面向对象编程

    python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...

  9. python笔记 - day7

    python笔记 - day7 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 面向对象,初级篇: http://www.cnblog ...

随机推荐

  1. sap快捷登录

    利用程序SAPSHCUT.EXE    示例:sapshcut  -type=Transaction -system=IDS -client=800 -user=barry -pw=123456 -l ...

  2. css控制滚动条的出现隐藏导致的页面闪动的问题

    之前这些小细节都在实践的时候给忽视了,或者都动态加载,框架的使用等因素的隐藏,变得不那么容易出现. 今天看到张鑫旭大牛的微博,觉得记录一下这个小问题的解决方案 <div style=" ...

  3. A context-aware personalized travel recommendation system based on geotagged social media data mining

    文章简介:利用社交网站Flickr上照片的geotag信息将这些照片聚类发现城市里的旅游景点,通过各照片的拍照时间得到用户访问某景点时的时间上下文和天气上下文(利用时间和public API of W ...

  4. 1.moocs

    “三巨头”:Coursera.edX和Udacity Coursera:http://www.coursera.org 目前发展最大的MOOCs平台,拥有相近500门来自世界各地大学的课程,门类丰富, ...

  5. vscode 创建.net core项目初体验

    微软的virtual studio编辑器那是宇宙第一大编辑器,可惜就是太笨重,遇到性能差一些的电脑设备,简直无法快速的编辑项目. 而vs code编辑器轻便易用,想要编辑哪种项目,只需扩展插件就OK, ...

  6. winfrom程序文本框第一次选中问题

    想实现这样的功能: 就是在panel中的文本框,当第一次点击文本框时,全选文本框的内容:再次选择时,可以全选,也可以部分选中, 可是文本框总是从左全部选中,还不能从右边选择,在Enter或Down事件 ...

  7. LogFilter

    (一)Filter 在Java EE中,Filter是一个可以将请求和响应的头部或内容进行转换的一个对象.包括 (1)认证Filter    (2)日志和审核Filter    (3)图片转换Filt ...

  8. JSWebAPI

    DOM是哪种基本的数据结构   树 DOM本质,对html进行结构化,让浏览器解析,js可操作 DOM节点操作 DOM结构操作 DOM操作的常用API DOM节点的attr 和 property 的区 ...

  9. 基于.NET平台常用的框架整理<转载>

    转载来自:http://www.cnblogs.com/hgmyz/p/5313983.html 基于.NET平台常用的框架整理   自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大 ...

  10. 《JavaScript Dom 编程艺术》读书笔记-第11章

    本章简单介绍了HTML5,并推荐了一个好工具Modernizr,用于检测浏览器可能支持的各种特性. HTML5的新特性包括: 可以用来在文档中绘制矢量及位图的<canvas>元素: 可以在 ...