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所支持的数据类型

存文件三个操作:

会产生三个文件!!

读文件操作

Python天天学_05_模块的更多相关文章

  1. Python天天学_03_基础三

    Python_day_03 金角大王: http://www.cnblogs.com/alex3714/articles/5740985.html ------Python是一个优雅的大姐姐 学习方式 ...

  2. Python天天学_01_基础1

    Python_day_01 金角大王:http://www.cnblogs.com/alex3714/articles/5465198.html ------Python是一个优雅的大姐姐 学习方式: ...

  3. Python天天学_04_基础四

    Python_day_04 金角大王: http://www.cnblogs.com/alex3714/articles/5765046.html ------Python是一个优雅的大姐姐 学习方式 ...

  4. Python天天学_02_基础二

    Python_day_02 金角大王:http://www.cnblogs.com/alex3714/articles/5717620.html ------Python是一个优雅的大姐姐 学习方式: ...

  5. Python天天美味(15) - Python正则表达式操作指南(re使用)(转)

    http://www.cnblogs.com/coderzh/archive/2008/05/06/1185755.html 简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格 ...

  6. python最重要的模块logging

    logging模块 这个模块是目前最重要的模块!!!我一定给讲透彻一点 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python中的loggi ...

  7. python 正则表达式 (重点) re模块

    京东的注册页面,打开页面我们就看到这些要求输入个人信息的提示.假如我们随意的在手机号码这一栏输入一个11111111111,它会提示我们格式有误.这个功能是怎么实现的呢?假如现在你用python写一段 ...

  8. Python正则表达式与hashlib模块

    菜鸟学python第十六天 1.re模块(正则表达式) 什么是正则表达式 正则表达式是一个由特殊字符组成的序列,他能帮助对字符串的某种对应模式进行查找. 在python中,re 模块使其拥有全部的正则 ...

  9. python之路——常用模块

    阅读目录 认识模块 什么是模块 模块的导入和使用 常用模块一 collections模块 时间模块 random模块 os模块 sys模块 序列化模块 re模块 常用模块二 hashlib模块 con ...

随机推荐

  1. Oracle密码过期(the password has expired)

    1.进入sqlplus模式--sqlplus / as sysdba; 2.查看用户密码的有效期设置(一般默认的配置文件是DEFAULT) SELECT * FROM dba_profiles WHE ...

  2. [Python3] 039 语法调试

    目录 语法调试 1. 调试技术 2. pdb 调试 插一个 gdb 3.Pycharm 调试 4. 单元测试 语法调试 1. 调试技术 调试流程 单元测试 → 集成测试 → 交测试部 分类: 静态调试 ...

  3. Replace Words

    In English, we have a concept called root, which can be followed by some other words to form another ...

  4. PostgreSQL的同步级别与MySQL的半同步after_sync比较

    MySQL的半同步中通过binlog进行流复制,同步级别和PostgreSQL对比可以发现: PostgreSQL                MySQL off local            ...

  5. 什么是分布式关系型数据库服务 DRDS

    DRDS 产品简介 DRDS 是一款基于 MySQL 存储.采用分库分表技术进行水平扩展的分布式 OLTP 数据库服务产品,支持 RDS for MySQL 以及 POLARDB for MySQL, ...

  6. # 「NOIP2010」关押罪犯(二分图染色+二分答案)

    「NOIP2010」关押罪犯(二分图染色+二分答案) 洛谷 P1525 描述:n个罪犯(1-N),两个罪犯之间的仇恨值为c,m对仇恨值,求怎么分配使得两件监狱的最大仇恨值最小. 思路:使最大xxx最小 ...

  7. golang(5):struct & 链表 & 二叉树 & 接口

    struct : 结构体 // 1. 用来自定义复杂数据结构 // 2. struct里面可以包含多个字段(属性) // 3. struct类型可以定义方法,注意和函数的区分 // 4. struct ...

  8. luogu题解 P2212 【浇地Watering the Fields】

    题目链接: https://www.luogu.org/problemnew/show/P2212 思路: 一道最小生成树裸题(最近居然变得这么水了),但是因为我太蒻,搞了好久,不过借此加深了对最小生 ...

  9. 《HTML、CSS、Javascript网页制作,从入门到精通》——第一章 HTML基础,第二章HTML基本标记

    1)HTML的基本概念 HTML就一种描述性的标记语言,是文档的超文本标记语言. 基本结构为: HTML标记组成  : <标记元素> 源文件中标记是不区分大小写的. 2)编写方法: 1&g ...

  10. Vue的nextTick是什么?

    公司做之前项目的时候,遇到了一些比较困惑的问题,后来研究明白了nextTick的用法. 我们先看两种情况: 第一种: export default { data () { return { msg: ...