Python天天学_05_模块
Python_day_05
金角大王: http://www.cnblogs.com/alex3714/articles/5161349.html
------Python是一个优雅的大姐姐
学习方式:通过老师的视频以及博客上面文档,以完成作业和知识点归纳的方式编写自己博客。
本节内容(尽量重点标记出来,这一节知识很多很难记)
模块介绍
模块一共三种:
l python标准库
l 第三方模块
l 应用程序自定义模块
模块导入方法
- import 语句
- from…import 语句
- From…import* 语句
包(package)
如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。
请注意,每一个包目录下面都会有一个__init__.py
的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录(文件夹),而不是一个包。__init__.py
可以是空文件,也可以有Python代码,因为__init__.py
本身就是一个模块,而它的模块名就是对应包的名字。调用包就是执行包下的__init__.py文件
模块之间相互调用
模块之间的相互调用需要更改路径:
A) 获取文件相对路径(以绝对路径显示)
print(os.path.abspath(__file__))
#C:\Users\Administrator.WIN-6OTFE0NIBU4\PycharmProjects\ATM\bin\bin.py
B)
向上延伸至ATM路径(基本路径)中
BASE_DIR =
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#
C:\Users\Administrator.WIN-6OTFE0NIBU4\PycharmProjects\ATM
print(BASE_DIR)
C)
通过sys模块添加路径,完成路径调用
import os,sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
__name__变量使用
__name__在当前文件中调用为:__main__
在其他文件中调用为:name所在文件的模块名。
一、time模块
time() -- return current time in seconds since the Epoch as a float
clock() -- return CPU time since process start as a float
sleep() -- delay for a number of seconds given as a float
gmtime() -- convert seconds since Epoch to UTC tuple
localtime() -- convert seconds since Epoch to local time tuple
asctime() -- convert time tuple to string
ctime() -- convert time in seconds to string
mktime() -- convert local time tuple to seconds since Epoch
strftime() -- convert time tuple to string according to format specification
strptime() -- parse string to time tuple according to format specification
tzset() -- change the local timezone
二、random模块
三、os模块
# os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
# os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
# os.curdir 返回当前目录: ('.')
# os.pardir 获取当前目录的父目录字符串名:('..')
# os.makedirs('dirname1/dirname2') 可生成多层递归目录
# os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
# os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
# os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
# os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
# os.remove() 删除一个文件
# os.rename("oldname","newname") 重命名文件/目录
# os.stat('path/filename') 获取文件/目录信息
# os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
# os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
# os.pathsep 输出用于分割文件路径的字符串
# os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
# os.system("bash command") 运行shell命令,直接显示
# os.environ 获取系统环境变量
# os.path.abspath(path) 返回path规范化的绝对路径
# os.path.split(path) 将path分割成目录和文件名二元组返回
# os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
# os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
# os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
# os.path.isabs(path) 如果path是绝对路径,返回True
# os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
# os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
# os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
# os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
# os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
四、sys模块
1.sys.argv
命令行参数List,第一个元素是程序本身路径
# ['C:/Users/Administrator.WIN-6OTFE0NIBU4/PycharmProjects/s14/day5/sys.py']
2.sys.path
返回模块的搜索路径
# ['C:\\Users\\Administrator.WIN-6OTFE0NIBU4\\PycharmProjects\\s14\\day5',
# 'C:\\Users\\Administrator.WIN-6OTFE0NIBU4\\PycharmProjects\\s14',
# 'C:\\Users\\Administrator.WIN-6OTFE0NIBU4\\PycharmProjects\\s14\\venv\\Scripts\\python36.zip',
# 'C:\\Users\\Administrator.WIN-6OTFE0NIBU4\\PycharmProjects\\s14\\venv\\DLLs',
# 'C:\\Users\\Administrator.WIN-6OTFE0NIBU4\\PycharmProjects\\s14\\venv\\lib',
# 'C:\\Users\\Administrator.WIN-6OTFE0NIBU4\\PycharmProjects\\s14\\venv\\Scripts',
# 'C:\\Users\\Administrator.WIN-6OTFE0NIBU4\\AppData\\Local\\Programs\\Python\\Python36-32\\Lib',
# 'C:\\Users\\Administrator.WIN-6OTFE0NIBU4\\AppData\\Local\\Programs\\Python\\Python36-32\\DLLs',
# 'C:\\Users\\Administrator.WIN-6OTFE0NIBU4\\PycharmProjects\\s14\\venv',
# 'C:\\Users\\Administrator.WIN-6OTFE0NIBU4\\PycharmProjects\\s14\\venv\\lib\\site-packages',
# 'C:\\Program Files\\JetBrains\\PyCharm 2017.3.3\\helpers\\pycharm_matplotlib_backend']
3.sys.platform
#返回操作系统平台名称
# win32
五、hashlib模块
用于加密相关的操作,3.x里主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
六、logging模块
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误、警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志。
1.简单运用
logging的日志可以分为 debug() , info(), warning(), error() and critical() 5个级别
可见,默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET),默认的日志格式为日志级别:Logger名称:用户输出消息。
2. 灵活配置日志级别,日志格式,输出位置
test.log文档
可见在logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:
A) filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。
B) filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
C) format:指定handler使用的日志显示格式。
D) datefmt:指定日期时间格式。
E) level:设置rootlogger(后边会讲解具体概念)的日志级别
F) stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open('test.log','w')),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。
format参数中可能用到的格式化串:
l %(name)s Logger的名字
l %(levelno)s 数字形式的日志级别
l %(levelname)s 文本形式的日志级别
l %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
l %(filename)s 调用日志输出函数的模块的文件名
l %(module)s 调用日志输出函数的模块名
l %(funcName)s 调用日志输出函数的函数名
l %(lineno)d 调用日志输出函数的语句所在的代码行
l %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
l %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
l %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
l %(thread)d 线程ID。可能没有
l %(threadName)s 线程名。可能没有
l %(process)d 进程ID。可能没有
l %(message)s用户输出的消息
3.logger
test.log文档
七、configparser模块
基本的创建方法
文件内容:
基本查找方法:
查找方法(还有三个):
增,删,改操作:
文件内容:
八、re模块(正则表达式)
就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。
字符匹配(普通字符,元字符):
普通字符:大多数字符和字母都会和自身匹配
>>> re.findall('alvin','yuanaleSxalexwupeiqi')
['alvin']
元字符:. ^ $ * + ? { } [ ] | ( ) \
十一个元字符的用法
. ^ $ * + ? { }用法
.:代替一个字符匹配
^:从开头进行匹配
$:从结尾进行匹配
*:前一个元素出现[0,正无穷)个
+:前一个元素出现[1,正无穷)个
?:前一个元素出现[0,1]个
{a,b}:前一个元素出现[a,b]个
[ ] | ( ) \用法
元字符之字符集[]:
# 在字符集里有功能的符号: - ^ \
元字符之转义符\
反斜杠后边跟元字符去除特殊功能,比如\.
反斜杠后边跟普通字符实现特殊功能,比如\d
\d 匹配任何十进制数;它相当于类 [0-9]。
\D 匹配任何非数字字符;它相当于类 [^0-9]。
\s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。
\S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
\b 匹配一个特殊字符边界,比如空格 ,&,#等
元字符之分组()
元字符之|
‘或’的作用
re模块下的常用方法
六个主要使用的方法
九、josn和pickle模块
什么是序列化?
我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。
序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。
反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpicklin
序列化操作(dumps方法)
反序列化操作(loads方法)
十、shelve模块
Shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型
存文件三个操作:
会产生三个文件!!
读文件操作
Python天天学_05_模块的更多相关文章
- Python天天学_03_基础三
Python_day_03 金角大王: http://www.cnblogs.com/alex3714/articles/5740985.html ------Python是一个优雅的大姐姐 学习方式 ...
- Python天天学_01_基础1
Python_day_01 金角大王:http://www.cnblogs.com/alex3714/articles/5465198.html ------Python是一个优雅的大姐姐 学习方式: ...
- Python天天学_04_基础四
Python_day_04 金角大王: http://www.cnblogs.com/alex3714/articles/5765046.html ------Python是一个优雅的大姐姐 学习方式 ...
- Python天天学_02_基础二
Python_day_02 金角大王:http://www.cnblogs.com/alex3714/articles/5717620.html ------Python是一个优雅的大姐姐 学习方式: ...
- Python天天美味(15) - Python正则表达式操作指南(re使用)(转)
http://www.cnblogs.com/coderzh/archive/2008/05/06/1185755.html 简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格 ...
- python最重要的模块logging
logging模块 这个模块是目前最重要的模块!!!我一定给讲透彻一点 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python中的loggi ...
- python 正则表达式 (重点) re模块
京东的注册页面,打开页面我们就看到这些要求输入个人信息的提示.假如我们随意的在手机号码这一栏输入一个11111111111,它会提示我们格式有误.这个功能是怎么实现的呢?假如现在你用python写一段 ...
- Python正则表达式与hashlib模块
菜鸟学python第十六天 1.re模块(正则表达式) 什么是正则表达式 正则表达式是一个由特殊字符组成的序列,他能帮助对字符串的某种对应模式进行查找. 在python中,re 模块使其拥有全部的正则 ...
- python之路——常用模块
阅读目录 认识模块 什么是模块 模块的导入和使用 常用模块一 collections模块 时间模块 random模块 os模块 sys模块 序列化模块 re模块 常用模块二 hashlib模块 con ...
随机推荐
- [转帖]Java 8新特性探究(九)跟OOM:Permgen说再见吧
Java 8新特性探究(九)跟OOM:Permgen说再见吧 https://my.oschina.net/benhaile/blog/214159 need study 很多开发者都在其系统中见过“ ...
- Python学习【day04】- Python基础(集合、函数)
集合 #!/usr/bin/env python # -*- coding:utf8 -*- # set集合 只可放不可变的数据类型,本身是可变数据类型,无序 # s = {1,2,3,[1,2,3] ...
- Intellij IDEA中使用Debug调试
转自:https://blog.csdn.net/zj420964597/article/details/78662299只是为了方便学习技术,少走弯路,如果有异议,请留言,及时处理!!!
- 如何用纯 CSS 创作一个菜单反色填充特效
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览.https://codepen.io/comehope/pen/qYMoPo 可交互视频教程 ...
- 多进程-Pool进程池
from multiprocessing import Pool import os,time def Foo(i): time.sleep(2) print("in process&quo ...
- JavaSE--异常机制
异常就是程序在运行时出现的不正常情况.发生在运行时期,java程序在运行时期发生的不正常情况,此时java就按照面向对象的思想对不正常现象进行描述和对象的封装.异常的由来:问题也是现实生活中一个具体的 ...
- springboot(十八)-session共享
前言 在传统的单服务架构中,一般来说,只有一个服务器,那么不存在 Session 共享问题,但是在分布式/集群项目中,Session 共享则是一个必须面对的问题,先看一个简单的架构图: 在这样的架构中 ...
- VUE项目中使用this.$forceUpdate()强制页面重新渲染
在使用Vue框架开发时,在函数中改变了页面中的某个值,在函数中查看是修改成功了,但在页面中没有及时刷新改变后的值,我是在使用多层v-for嵌套时出现这种问题的, 解决方法:运用 this.$force ...
- Python(os和sys)理解
Python(os和sys)理解 os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口; sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时 ...
- 使用Mybatis Generator自动生成代码
MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器.它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码.它将内省数据库 ...