python常用库

os库

os模块是python中整理文件和目录最常用的模块,该模块提供了非常丰富的方法来处理文件和目录

  • os.name:返回操作系统的名字。如windows返回'nt',Linux返回'posix'

  • os.getcwd():获取当前工作的目录,返回绝对路径

  • os.listdir(path):以列表形式列出path目录下所有的文件和目录名,默认为本文件所在目录。不区分目录和文件

  • os.remove(path):删除指定的文件,不能省略参数且path不存在会报错

  • os.rmdir(path):删除path指定的目录,参数不能省略且只能删除空目录,否则会报错

  • os.removedirs(path):删除多级空目录

  • os.mkdir(path):创建path指定的目录,如果文件夹存在就会报错,只能创建下一级目录

  • os.makedirs(path):创建path指定的目录,如果文件夹存在就会报错,可以直接生成多层级目录

  • os.walk(path):深层次遍历指定路径下的所有子文件夹,返回一个由路径、文件夹列表、文件列表组成的元组

  • os.chdir(path):改变工作目录到指定目录

os.path模块

  • os.path.exists(path):判断path路径是否存在

  • os.path.isfile(path):判断path是否为文件

  • os.path.isdir(path):判断是否为目录

  • os.path.join(path1,path2):将两个路径字符串拼接起来,形成完成路径

  • os.path.split(path):传入一个完整的路径,拆分成绝对路径文件名元组形式

  • os.path.dirname(path):传入完整文件路径,只返回绝对路径

  • os.path.basename(path):传入路径,只返回文件名

  • os.path.getsize(path):返回文件大小(字节)

  • os.path.abspath():获得绝对路径。

  • os.path.getmtime(path):文件或文件夹的最后修改时间,从新纪元到访问时的秒数。

  • os.path.getatime(path):文件或文件夹的最后访问时间,从新纪元到访问时的秒数。

  • os.path.getctime(path):文件或文件夹的创建时间,从新纪元到访问时的秒数。

pathlib库

pathlib是从python3开始就能完全替代os.path的内置库

pathlib和os.path的比较

  1. 当需要找多个层级的目录路径时,通过os.path需要嵌套写法,而``pathlib`可以提供链式写法

  2. os.path只用与处理路径,如果你想创建一个目录,就得用os,而pathlib可以一站式搞定

Path.is_dir()  # 判断是否是目录

Path.is_dir()  # 是否是文件

Path.exists()  # 判断路径是否存在

Path.open()  # 打开文件(支持with)

Path.resolve()  # 返回绝对路径

Path.cwd()  # 返回当前目录

Path.iterdir()  # 遍历目录的子目录或者文件

Path.mkdir()  # 创建目录

Path.rename()  # 重命名路径

Path.unlink()  # 删除文件或目录(目录非空触发异常)

Path.joinpath()  # 拼接路径

Path.parents  # 返回所有上级目录的列表

Path.parts  # 分割路径 类似os.path.split(), 不过返回元组

Path.root  # 返回路径的根目录

time库

python中处理时间的最基础的库

  • time():获取当前时间戳,返回从新纪元到访问时的秒数

  • localtime(sec):返回sec到新纪元结构化时间,参数为时间戳,默认为本地时间

  • gmtime(sec):默认为世界时间

  • ctime():返回格式为‘星期 月份 日 时间 年份’

  • sleep(s):程序休眠,参数为秒

  • strftime(时间格式控制符,结构化时间):将时间格式输出为字符串

    时间格式控制符
    说明

    %Y

    四位数的年份

    %m

    月份(1-12)

    %d

    月份的一天(1-31)

    %B

    本地完整的月份名称,如January

    %b

    本地简化的月份名称,如Jan

    %a

    本地简化的周日期,如Mon-Sunday

    %A

    本地完整周日期

    %H

    24小时制小时数(0-23)

    %I

    12小时制小时数(1-12)

    %p

    上下午,曲志伟AM或PM

    %M

    分钟数(0-59)

    %S

    秒(0-59)

    %j

    返回当天是当年的第几天[1,366]

    %U

    返回当周是当年的第几周,以周日为第一天

    %W

    返回当周是当年的第几周,以周一为第一天

    %w

    当天在当周的天数[1-7]

    %x

    日期的字符串表示:03/08/15

    %X

    时间的字符串表示:23:22:08

    %c

    返回跟ctime()一样

re模块

re模块是python独有的匹配字符串的模块,但是很多功能是基于正则表达式实现的,所以re模块多用于正则匹配

re标志位
作用

re.I

忽略大小写

re.L

让\w,\W,\b,\B和区分大小写的匹配取决于当前的语言环境。该标志只能与字节模式一起使用。不建议使用此标志,因为语言环境机制非常不可靠,它一次只能处理一种“区域性”,并且仅适用于8位语言环境。默认情况下,Python 3中已为Unicode(str)模式启用了Unicode匹配,并且能够处理不同的语言环境/语言。

re.M

多行模式

re.S

使'.'特殊字符与任何字符都匹配,包括换行符;没有此标志,'.'将匹配除换行符以外的任何内容。(单行匹配)

常用方法

  • re.compile(pattern,flags=0)

    将正则表达式模式编译为正则表达式对象,可使用match、search等方法进行匹配

    # 生成正则对象
    prog = re.compile('\d{2}')
    prog.search('12abc')
    prog.match('123abc')
    prog.search('12abc').group() 
    # 通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。match也一样
    # group()返回整个字符串
    # group(1)返回第一个被括号包裹的值
    
    # 输出
    <_sre.SRE_Match object; span=(0, 2), match='12'>
    <_sre.SRE_Match object; span=(0, 2), match='12'>
    '12'
  • re.search(pattern,string,flags)

    扫描字符串以查找正则表达模式产生匹配项的第一个位置,然后返回match对象.

    re.search('\w+','abcde').group()
    # 'abcde'
  • re.match(pattern,string,flags=0)

    如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的匹配对象。

    re.match('a','abcade').group()
    # 'a'
  • re.findall(pattern,string,flags=0)

    在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。注意**:** match 和 search 是匹配一次 findall 匹配所有。

    import re
    ret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")
    print(ret)
    
    # ['9999', '7890', '12345']
  • re.finditer()

    和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

    import re
    it = re.finditer(r"\d+", "12a32bc43jf3")
    for match in it:
        print(match.group())
  • re.sub(pattern,repl,string,count=0,flags=0)

    sub是substitute的所写,表示替换,将匹配到的数据进⾏替换。

    参数
    描述

    pattern

    必选,表示正则中的模式字符串

    repl

    必选,要替换的字符串,也可以为一个函数

    string

    必选,被替换的字符串

    count

    可选,要替换的最大次数,如果省略或为0,则全部被替换

    flag

    标志位

    # 替换为字符串
    import re
    ret = re.sub(r"\d+", '998', "python = 997")
    print(ret)
    
    # 替换为函数
    import re
    def add(temp):
        #int()参数必须是字符串,类似字节的对象或数字,而不是“re.Match”
        strNum = temp.group()
        num = int(strNum) + 1
        return str(num)
    ret = re.sub(r"\d+", add, "python = 997")
    print(ret)
    ret = re.sub(r"\d+", add, "python = 99")
    print(ret)
    
  • re.subn()

    跟sub函数系统,但是返回一个元组

random随机数模块

  • seed(int)

    生成一个随机数种子,用于同步不同运行环境的随机数

    当产生随机数种子相同时,可以预测要生成的随机数

    import random
    
    random.seed(44)
    print(random.randint(0,99))
    
    random.seed(44)
    print(random.randint(2,99))
    
    # 52
    # 54
  • random()

    生成一个[0,1)数字

  • uniform()

    生成一个a,b区间的随机数

>> uniform(2.5,10.0)
3.1800146073117523
  • randrange(start,stop[,step])

    整数随机,等同于choice(range(start,stop,step))

  • randint()

    返回一个[a,b]的整数

  • choice()

    返回对象中的一个随机元素

  • shuffle()

    打乱序列

最后更新于