2025年Python3文件、目录的操作

Python3文件、目录的操作Python 对目录的操作需要用到内置函数 os 与 os path 本章目录 模块说明 操作详解 1 查询相对路径 2 查询绝对路径 3 判断目录或文件是否存在 4 创建目录 5 创建多级目录 6 删除目录 7 遍历目录 高级文件操作 1 删除文件 2 重命名文件与目录 获取文件基本信息 模块说明

大家好,我是讯享网,很高兴认识大家。

Python对目录的操作需要用到内置函数os与os.path 

本章目录

模块说明

操作详解

1、查询相对路径

2、查询绝对路径

3、判断目录或文件是否存在

4、创建目录

5、创建多级目录 

6、删除目录

7、遍历目录

 高级文件操作

1、删除文件

2、重命名文件与目录

获取文件基本信息


模块说明

os模块函数

函数 说明
getcwd() 返回当前的工作目录
listdir(path) 返回指定路径下文件和目录信息
mkdir(path[,mode]) 创建目录
makedirs(path1/path2....[,mode]) 创建多级目录
rmdir(path) 删除目录
removedirs(path1/path2) 删除多级目录
chdir(path) 把path设置为当前工作目录
walk(top[,topdown[,onerror]]) 遍历目录树,该方法返回一个元组,包括所有路径名、所有目录列表和文件列表3个元素

os.path模块函数

函数 说明
abspath(path) 用于获取文件或目录的绝对路径
exists(path) 用于判断目录或文件是否存在,如果存在则返回True,否则False
join(path,name) 将目录与目录或者文件名拼接
splitext() 分离文件名和扩展名
basename(path) 从一个目录中提取文件名
dirname(path)  从一个路径中提取文件路径,不包括文件名
isdir(path) 用于判断路径是否有效

操作详解

1、查询相对路径

# 查询当前相对路径

import os print(os.getcwd())

讯享网

 运行结果:


讯享网

2、查询绝对路径

讯享网import os print(os.path.abspath(r"text.txt"))

运行结果:

3、判断目录或文件是否存在

        exists函数

                 可采用绝对路径或者相对路径

                返回值: False 为不存在  True为存在

                可以判断文件或者目录都可以

import os print(os.path.exists("C:\\demo"))

4、创建目录

注意: 如果指定的目录有多级,且最后一级的上级目录不存在,则会抛出FileNotFoundError的异常错误,创建失败,解决办法: 1、用多级目录的方式创建  2.编写递归函数调用os.mkdir函数实现,代码如下

os.path.split('PATH') # 会拆分成两个元组的形式 一个元组为路径 一个元组为创建的文件名称

1.PATH指一个文件的全路径作为参数

2.如果给出的是一个目录和文件名,则输出路径和文件名

3.如果给出的是一个目录名,则输出路径和为空文件名

讯享网import os # 导入函数 def mkdir_file(path): # 定义递归创建目录函数 if not os.path.exists(path): # 判断是否为有效路径 mkdir_file(os.path.split(path)[0]) # 递归函数调用 else: # 目录存在则直接返回 return os.mkdir(path) # 创建目录 mkdir_file("D:\\test\\文件操作\\test") # 调用mkdir()递归函数 # 注意 要用 \ 转义一下

5、创建多级目录 

os.mkdir 创建一级目录  os.makedirs用于递归创建目录

格式:

os.makedirs(file_name,mode=0o777)

参数说明:

        file_name : 用于指定要创建的目录,可以使用绝对路径,也可以使用相对路径

        mode: 用于指定数值模式,默认为 0o777。该参数在非UNIX系统上无效或被忽略

用法:

讯享网import os os.makedirs("D:\\test\dir\test\test") # 创建多级目录 

6、删除目录

        使用 os.rmdir()函数删除目录 ,注意这里只能删除空目录,如果想删除有内容的目录需要用到内置函数shutil,下面展示俩种的写法

import os os.rmdir("D:\\test\test") # 删除空目录 “\”转义 import shutil shutil.rmtree("D:\\test") # 删除非空目录

7、遍历目录

        遍历目录就是对指定目录下的全部目录包括子目录、文件等全部显示,在os模块中walk函数就是用于实现遍历目录的功能,并以元组的形式返回。

格式:

讯享网os.walk(top,[topdown],[onerror],[followlinks])

参数说明:

top: 用于指定要遍历内容的根目录

topdown: 可选参数,用于指定遍历的顺序,如果值为True 表示自上而下  False 表示自下而上

onerror: 可选参数 用于指定错误处理方式,默认为忽略,如果不想忽略可以制定一个错误处理函数,通常采用默认

followlinks: 可选参数  默认清下,walk函数不会向下转成解析到目录的符号链接,将改参数True,表示用于指定在支持的系统**问由符号链接指向的目

# 示例

import os file = os.walk("test") # 遍历当前目录下的test目录 for i in file: # 循环 遍历的目录 直接打印 遍历的目录是出不来的 print(i)

   运行结果:

          

 高级文件操作

os模块提供的与文件相关的函数以及说明

函数  说明
access(path,accessmode) 获取文件是否有指定的访问权限(读、写、执行)。accessmode的值是R_OK(读),W_OK(写),X_OK(执行),F_OK(存在)。如果没有指定的权限,则返回1,否则返回0
chmod(path,mode) 修改文件访问权限
remove(path) 删除path指定的文件路径
rename(src,dst) 将文件或目录src 重命名为 dst
stat(path) 返回path指定文件的信息

startfile(path,[operation])

使用关联的应用程序打开path指定的文件

1、删除文件

讯享网import os os.remove("test.txt") # 删除文件test.txt 可以加路径但是要加 转义字符“\”

2、重命名文件与目录

 import os # 修改文件 src = "test\\01\\TEST.txt" # 要修改的文件名称 dst = "test\\01\\Test.txt" # 修改后的文件名称 os.rename(src, dst) # 执行修改 先是要修改的文件名称 然后是修改的文件名称 # 修改目录 catalog = "test\\01" # 要修改的目录名称 catalog1 = "test\\66" # 修改后的目录名称 os.rename(catalog,catalog1)

获取文件基本信息

os.stat 函数用于获取文件基本信息(文件大小,最后一次访问时间,最后一次修改时间,最后一次状态变化时间,索引号,设备名)等信息。注意:需要进行格式转换才可以变得直观

属性说明

属性 说明
st_mode 保护模式
st_dev 设备名
st_ino 索引号
st_nlink 硬链接号(被链接数目)
st_size 文件大小,单位为字节
st_mtime 最后一次修改时间
st_uid 用户ID
st_gid 组ID号
st_atime 最后一次访问时间
st_ctime 最后一次状态变化的时间。系统不同,返回结果也不同。例如windows下返回的是文件创建时间

# 举例:

显示文件的 索引号,设备号,文件大小,最后一次访问时间,最后一次修改时间,最后一次状态变化时间

演示转换 与未转换的两种方式对比

讯享网import os fileinfo = os.stat("test\\02\\test.txt") # 输出文件的基本信息 print("未转换显示内容".center(50, "-")) print("索引号:", fileinfo.st_ino) print("设备名:", fileinfo.st_dev) print("文件大小:", fileinfo.st_size, "B") print("最后一次访问时间:", fileinfo.st_atime) print("最后一次修改时间:", fileinfo.st_mtime) print("最后一次状态变化时间:", fileinfo.st_ctime) import time def FormatTaime(longtime): """ 格式化日期的函数 logtime:要格式化的时间 """ return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(longtime)) # 导入时间模块 并以 年月日 时分秒的形式显示 def formatByte(number): """ 格式化文件大小的函数 number:要格式化的字节数 """ for (scale, labei) in [(1024 * 1024 * 1024, "GB"), (1024 * 1024 * 1024, "MB"), (1024, "KB")]: # scale 第一次循环为 :1,073,741,824 labei 第一次循环结果为:GB if number >= scale: # 如果文件大小 大于 等于 1KB return "%.2f %s" % (number * 1.0 / scale, labei) # %.2f :格式化输出 elif number == 1: # 如果文件小于1B return "1 B" else: # 处理小于1b的文件 byte = "%.2f" % (number or 0) return (byte[:-3] if byte.endswith('.00') else byte) + "B" print("已转换显示内容".center(50, "-")) print("索引号:", fileinfo.st_ino) print("设备名:", fileinfo.st_dev) print("文件大小:", formatByte(fileinfo.st_size)) print("最后一次访问时间:", FormatTaime(fileinfo.st_atime)) print("最后一次修改时间:", FormatTaime(fileinfo.st_mtime)) print("最后一次状态变化时间:", FormatTaime(fileinfo.st_ctime))

运行结果:

小讯
上一篇 2025-03-19 12:14
下一篇 2025-03-31 18:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/48237.html