zoukankan      html  css  js  c++  java
  • 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:UsersAdministrator.WIN-6OTFE0NIBU4PycharmProjectsATMinin.py

    B)            向上延伸至ATM路径(基本路径)中

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    # C:UsersAdministrator.WIN-6OTFE0NIBU4PycharmProjectsATM
    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下为" ",Linux下为" "
    # 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  匹配任何空白字符;它相当于类 [ fv]。

    S 匹配任何非空白字符;它相当于类 [^ fv]。

    w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。

    W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]

      匹配一个特殊字符边界,比如空格 ,&,#等

    元字符之分组()

     

    元字符之|

    ‘或’的作用

    re模块下的常用方法

     

    六个主要使用的方法

    九、josn和pickle模块

    什么是序列化?

    我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。

    序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。

    反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpicklin

    序列化操作(dumps方法)

     

    反序列化操作(loads方法)

     

    十、shelve模块

    Shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型

    存文件三个操作:

    会产生三个文件!!

     

    读文件操作

     

  • 相关阅读:
    【PHP】最详细PHP从入门到精通(二)——PHP中的函数
    利用 MUI开发app, 如何实现侧滑菜单及其主体部分上下滑动
    JavaScript面向对象编程—this详解
    利用Hadoop streaming 进行词频统计
    Java 平时作业七
    Java 平时作业六
    Java 平时作业五
    Java 平时作业四
    Java 平时作业三
    JAVA 平时作业二
  • 原文地址:https://www.cnblogs.com/xzmxddx/p/8409358.html
Copyright © 2011-2022 走看看