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. PTA(Basic Level)1041.考试座位号

    每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考 ...

  2. Oracle 即时客户点下载以及简单连接数据库的方法

    1. 下载方法 百度 oracle client 第一个即可 2. 下载地址为: https://www.oracle.com/database/technologies/instant-client ...

  3. 同sql server不同database间的数据访问

    虽未经测试,但是应该是登陆名同时具有此2数据库访问权限啦. select * from [basename].dbo.[tablename] done.

  4. [Luogu5686] 和积和

    Description 给定两个下标从\(1\)到\(n\)编号的序列 \(a_i,b_i\),定义函数\(S(l,r)(1\le l\le r\le n)\)为: \[\sum_{i=l}^r a_ ...

  5. 坦克大战--Java类型 ---- (2)按键设置和用户名的输入

    一.实现思路(emmmm,这个地方我很大程度参照了别人的写法)   由于键盘按键众多,因此使用选择框JComboBox 进行按键选择,点击一个JButton 按钮后,读取所有选择框中的内容,然后存到一 ...

  6. CentOS 7 安装ActiveMQ

    今天给大家介绍一下 CentOS 7 下如何安装ActiveMQ,每个步骤均为亲自己操作后记录.下面我们开始吧. 1.首先进入自己的目录下面,创建并进入 activeMQ 文件夹(mkdir acti ...

  7. JS基础_强制类型转换-String

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. JavaScript斑马线表格制作

    //实现斑马线表格 //方法1: document.write('<table border="1">'); for(var i=1; i<11; i++){ i ...

  9. 重学HTML5的语义化

    干了这么多年的前端,之前面试的时候经常会遇到面试官提问:你是如何理解HTML的语义化的? 说实话,之前遇到这个问题的时候,都是从网上找参考答案,然后记下来,用自己的语言重新组织一下,就变成自己的理解了 ...

  10. React源码深度解析视频 某课网(完整版)

    <ignore_js_op> [课程介绍]:        React毫无疑问是前端界主流的框架,而框架本身就是热点.课程以讲解React实现原理为主,并在实现过程中讲解这么做的原因,带来 ...