Python天天学_05_模块

Python_day_05

金角大王: http://www.cnblogs.com/alex3714/articles/5161349.html

------Python是一个优雅的大姐姐

 

学习方式:通过老师的视频以及博客上面文档,以完成作业和知识点归纳的方式编写自己博客。

本节内容(尽量重点标记出来,这一节知识很多很难记)

模块介绍

模块一共三种:

l  python标准库

l  第三方模块

l  应用程序自定义模块

模块导入方法

  1. import 语句
  2. from…import 语句
  3. 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所支持的数据类型

存文件三个操作:

会产生三个文件!!

 

 

读文件操作

 

 

posted @ 2018-02-03 14:12  寻找梦想的大熊  阅读(209)  评论(0编辑  收藏  举报