当前位置:   article > 正文

Python3文件、目录的操作_python3 创建目录

python3 创建目录

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、查询相对路径

# 查询当前相对路径

  1. import os
  2. print(os.getcwd())
'
运行

 运行结果:

2、查询绝对路径

  1. import os
  2. print(os.path.abspath(r"text.txt"))
'
运行

运行结果:

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

        exists函数

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

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

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

  1. import os
  2. print(os.path.exists("C:\\demo"))
'
运行

4、创建目录

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

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

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

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

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

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

5、创建多级目录 

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

格式:

os.makedirs(file_name,mode=0o777)

参数说明:

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

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

用法:

  1. import os
  2. os.makedirs("D:\\test\dir\test\test") # 创建多级目录

6、删除目录

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

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

7、遍历目录

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

格式:

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

参数说明:

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

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

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

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

# 示例

  1. import os
  2. file = os.walk("test") # 遍历当前目录下的test目录
  3. for i in file: # 循环 遍历的目录 直接打印 遍历的目录是出不来的
  4. 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、删除文件

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

2、重命名文件与目录

  1. import os
  2. # 修改文件
  3. src = "test\\01\\TEST.txt" # 要修改的文件名称
  4. dst = "test\\01\\Test.txt" # 修改后的文件名称
  5. os.rename(src, dst) # 执行修改 先是要修改的文件名称 然后是修改的文件名称
  6. # 修改目录
  7. catalog = "test\\01" # 要修改的目录名称
  8. catalog1 = "test\\66" # 修改后的目录名称
  9. 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下返回的是文件创建时间

# 举例:

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

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

  1. import os
  2. fileinfo = os.stat("test\\02\\test.txt")
  3. # 输出文件的基本信息
  4. print("未转换显示内容".center(50, "-"))
  5. print("索引号:", fileinfo.st_ino)
  6. print("设备名:", fileinfo.st_dev)
  7. print("文件大小:", fileinfo.st_size, "B")
  8. print("最后一次访问时间:", fileinfo.st_atime)
  9. print("最后一次修改时间:", fileinfo.st_mtime)
  10. print("最后一次状态变化时间:", fileinfo.st_ctime)
  11. import time
  12. def FormatTaime(longtime):
  13. """
  14. 格式化日期的函数
  15. logtime:要格式化的时间
  16. """
  17. return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(longtime)) # 导入时间模块 并以 年月日 时分秒的形式显示
  18. def formatByte(number):
  19. """
  20. 格式化文件大小的函数
  21. number:要格式化的字节数
  22. """
  23. for (scale, labei) in [(1024 * 1024 * 1024, "GB"), (1024 * 1024 * 1024, "MB"), (1024, "KB")]:
  24. # scale 第一次循环为 :1,073,741,824 labei 第一次循环结果为:GB
  25. if number >= scale: # 如果文件大小 大于 等于 1KB
  26. return "%.2f %s" % (number * 1.0 / scale, labei) # %.2f :格式化输出
  27. elif number == 1: # 如果文件小于1B
  28. return "1 B"
  29. else: # 处理小于1b的文件
  30. byte = "%.2f" % (number or 0)
  31. return (byte[:-3] if byte.endswith('.00') else byte) + "B"
  32. print("已转换显示内容".center(50, "-"))
  33. print("索引号:", fileinfo.st_ino)
  34. print("设备名:", fileinfo.st_dev)
  35. print("文件大小:", formatByte(fileinfo.st_size))
  36. print("最后一次访问时间:", FormatTaime(fileinfo.st_atime))
  37. print("最后一次修改时间:", FormatTaime(fileinfo.st_mtime))
  38. print("最后一次状态变化时间:", FormatTaime(fileinfo.st_ctime))

运行结果:

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号