Python文件操作(I/O):相关模块(二)

本文详细介绍了Python中os.path模块进行路径操作、fnmatch模块进行文件名匹配以及tempfile模块创建临时文件和目录的相关函数。涵盖了绝对路径获取、路径解析、文件属性检查、临时文件管理等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python文件操作(I/O):相关模块(二)

一.os.path模块

os.path 模块提供了一些操作路径字符串的方法,还包含指定文件属性的方法

os.path模块常用函数

方法说明
os.path.abspath(path)返回 path 的绝对路径
os.path.basename(path)获取 path 路径的基本名称: path 末尾到最后一个斜杠的位置之间的字符串
os.path.commonprefix(list)返回 list(多个路径)中,所有 path 共有的最长的路径
os.path.dirname(path)返回 path 路径中的目录部分
os.path.exists(path)判断 path 对应的文件是否存在,如果存在,返回 True;反之,返回 False
os.path.lexists(path)判断路径是否存在,如果存在,则返回 True;反之,返回 False
os.path.expanduser(path)把 path 中包含的 “~” 和 “~user” 转换成用户目录。
os.path.expandvars(path)根据环境变量的值替换 path 中包含的 “$name” 和 “${name}”
os.path.getatime(path)返回 path 所指文件的最近访问时间(浮点型秒数)
os.path.getmtime(path)返回文件的最近修改时间(单位为秒)
os.path.getctime(path)返回文件的创建时间(单位为秒,自 1970 年 1 月 1 日起( Unix 时间))
os.path.getsize(path)返回文件大小,如果文件不存在就返回错误
os.path.isabs(path)判断是否为绝对路径
os.path.isfile(path)判断路径是否为文件
os.path.isdir(path)判断路径是否为目录
os.path.islink(path)判断路径是否为链接文件(类似 Windows 系统中的快捷方式)
os.path.ismount(path)判断路径是否为挂载点
os.path.join(path1[, path2[, …]])把目录和文件名合成一个路径
os.path.normcase(path)转换 path 的大小写和斜杠
os.path.normpath(path)规范 path 字符串形式
os.path.realpath(path)返回 path 的真实路径
os.path.relpath(path[, start])从 start 开始计算相对路径
os.path.samefile(path1, path2)判断目录或文件是否相同
os.path.sameopenfile(fp1, fp2)判断 fp1 和 fp2 是否指向同一文件
os.path.samestat(stat1, stat2)判断 stat1 和 stat2 是否指向同一个文件
os.path.split(path)把路径分割成 dirname 和 basename,返回一个元组
os.path.splitdrive(path)一般用在 windows 下,返回驱动器名和路径组成的元组
os.path.splitext(path)分割路径,返回路径名和文件扩展名的元组
os.path.splitunc(path)把路径分割为加载点与文件
os.path.walk(path, visit, arg)遍历path,进入每个目录都调用 visit 函数,dirname 表示当前目录的目录名,names 代表当前目录下的所有文件名,args 则为 walk 的第三个参数
os.path.supports_unicode_filenames设置是否可以将任意 Unicode 字符串用作文件名
from os import path

print(path.abspath("a.txt")) # 获取绝对路径

print(path.commonprefix(['C://a.txt', 'C://b.txt'])) # 获取共同前缀

print(path.dirname('C://a.txt'))# 获取目录

print(path.exists('a.txt'))# 判断指定目录是否存在

C:\Users\Administrator\Desktop\2021-1-14\文件操作\a.txt
C://
C://
True

二.fnmatch模块

fnmatch 模块主要用于文件名称的匹配,但比使用正则表达式相比稍弱

在数据处理操作中,只需要使用简单的通配符就能完成文件名的匹配,使用 fnmatch 模块是不错的选择
fnmatch 模块匹配文件名的模式使用的是 UNIX shell 风格:

*:可匹配任意个任意字符

?:可匹配一个任意字符

[字符序列]:可匹配中括号里字符序列中的任意字符,也支持中画线表示法, [a-c] 可代表 a、b 和 c 字符中任意一个

[!字符序列]:可匹配不在中括号里字符序列中的任意字符

fnmatch模块常用函数

函数名功能
fnmatch.filter(names, pattern)对 names 列表进行过滤,返回 names 列表中匹配 pattern 的文件名组成的子集合
fnmatch.fnmatch(filename, pattern)判断 filename 文件名,是否和指定 pattern 字符串匹配
fnmatch.fnmatchcase(filename, pattern)和 fnmatch() 函数功能大致相同,该函数区分大小写
fnmatch.translate(pattern)将一个 UNIX shell 风格的 pattern 字符串,转换为正则表达式
import fnmatch

print(fnmatch.filter(['you', 'a.txt', 'b.txt', 'patli.py'], '*.txt'))

for file in ['word.doc','patli.py','a.txt']:
    if fnmatch.fnmatch(file,'*.txt'):
        print(file)

print([addr for addr in ['word.doc','patli.py','a.txt','a.TXT'] if fnmatch.fnmatchcase(addr, '*.txt')])

print(fnmatch.translate('a*b.txt'))

['a.txt', 'b.txt']
a.txt
['a.txt']
a.*b\.txt\Z(?ms)

三.tempfile模块

tempfile 模块常用函数

tempfile 模块用于创建临时文件和临时目录,既可以在 UNIX 平台上运行,也可以在 Windows 平台上运行
tempfile 模块函数功能描述
tempfile.TemporaryFile(mode=‘w+b’, buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None)创建临时文件。函数返回一个类文件对象,支持文件 I/O。
tempfile.NamedTemporaryFile(mode=‘w+b’, buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None, delete=True)创建临时文件,与TemporaryFile()的功能大致相同,它生成的临时文件在文件系统中有文件名
tempfile.SpooledTemporaryFile(max_size=0, mode=‘w+b’, buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None)创建临时文件,与 TemporaryFile 函数相比,当向该临时文件输出数据时,会先输出到内存中,直到超过 max_size 才会真正输出到物理磁盘中
tempfile.TemporaryDirectory(suffix=None, prefix=None, dir=None)生成临时目录
tempfile.gettempdir()获取系统的临时目录
tempfile.gettempdirb()与 gettempdir() 相同,该函数返回字节串
tempfile.gettempprefix()返回用于生成临时文件的前缀名
tempfile.gettempprefixb()与 gettempprefix() 相同,该函数返回字节串
  • 表中函数的参数都有默认值,如果没有特殊要求,可以不对其传参

tempfile 模块提供了tempfile.mkstemp()和empfile.mkdtemp() 两个低级别的函数

上面介绍的 用于创建临时文件和临时目录的函数都是高级别的函数,高级别的函数支持自动清理,而且可以与 with 语句一起使用,低级别的函数不支持,一般推荐使用高级别的函数来创建临时文件和临时目录

tempfile 模块提供了 tempfile.tempdir 属性,通过对该属性赋值可以改变系统的临时目录

生成临时文件和临时目录

import tempfile

fp = tempfile.TemporaryFile() # 创建临时文件
print(fp.name)
fp.write('YOUChanWILL'.encode('utf-8'))

fp.seek(0) # 将文件指针移到开始处,读取文件
print(fp.read().decode('utf-8')) # 输出刚才写入的内容
fp.close() # 关闭文件,该文件将会被自动删除

C:\Users\ADMINI~1\AppData\Local\Temp\tmp5g5ivxb2 #生成的临时文件的文件名
YOUChanWILL


手动创建临时文件,读写临时文件后要主动关闭,关闭该临时文件时,该文件会被自动删除
import tempfile

with tempfile.TemporaryFile() as fp:
    fp.write(b'YOUChanWill')     # 写入内容

    fp.seek(0)     # 将文件指针移到开始处,准备读取文件
    print(fp.read()) # 读取文件内容
with tempfile.TemporaryDirectory() as tmpdirname:#通过with语句创建临时目录
    print('创建临时目录', tmpdirname)

b'YOUChanWill'
创建临时目录 C:\Users\ADMINI~1\AppData\Local\Temp\tmpetu8a875 # 生成的临时目录的目录名

使用 with 语句创建临时文件,这样 with 语句会自动关闭临时文件

程序退出时临时文件和临时文件夹都会被删除

四.关于os模块

import os 

os.mkdir("file") #创建目录

shutil.copyfile("oldfile","newfile")  # oldfile和newfile都只能是文件     

shutil.copy("oldfile","newfile") #oldfile只能是文件夹,newfile可以是文件,也可以是目标目录          

shutil.copytree("olddir","newdir") #复制文件夹.olddir和newdir只能是目录,且newdir必须不存在       

os.rename("oldname","newname")  #重命名文件(目录)    

shutil.move("oldpos","newpos") #移动文件  

os.rmdir("dir")# 只能删除空目录

shutil.rmtree("dir") # 空目录、有内容的目录都可以删   
os.mknod() 

用于创建一个指定文件名的文件系统节点(文件,设备特别文件或者命名pipe)

os.mknod(filename[, mode=0600[, device=0]])

filename -- 创建的文件系统节点

mode:指定创建或使用节点的权限

device:可选,指定创建文件的设备

Windows上的Python不支持mknod函数,使用open()方式创建文件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值