• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

关闭

返回栏目

关闭

返回python栏目

69 - 自带库 - os - 系统路径操作

作者:

贺及楼

成为作者

更新日期:2024-10-27 18:02:48

os - 系统路径操作

os库简介

Python 的 os 库提供了与操作系统交互的功能,如文件和目录操作、环境变量访问、进程管理等。它允许程序执行路径操作、文件权限更改、系统信息获取等。os 库使得Python程序能够与底层操作系统紧密协作,执行系统级任务,是开发跨平台应用时不可或缺的工具。

os库功能汇总

文件夹路径图
ospag
├── dirname
├── dirname1
│ └── dirname2
└── os_test.py

分类 方法 中文 Win Linux Mac
操作系统信息 linesep = os.linesep 输出当前平台使用的行终止符 \t\n \n \n
操作系统信息 pathsep = os.pathsep 输出用于分割文件路径的字符串 ; : :
操作系统信息 name = os.name 输出字符串指示当前使用平台 nt posix posix
环境变量 environ_keys = os.environ.keys() 系统全部环境变量 KeysView(environ({'KEY': 'VALUE',...})) KeysView(environ({'KEY': 'VALUE',...})) KeysView(environ({'KEY': 'VALUE',...}))
环境变量 environ_setdefault = os.environ.setdefault("key_name", "value") 设置系统环境变量
环境变量 environ_get = os.environ.get("key_name") 获取系统环境变量
环境变量 environ_update = os.environ["key_name"] = value2 修改系统环境变量
环境变量 del(os.environ["key_name"]) 删除系统环境变量
路径 path = os.getcwd() 当前工作目录 C:\Users\xxx\Desktop\ospag /home/xxx/ospag /Users/xxx/Desktop/ospag
路径 p = os.sep 系统路径分隔符 \ / /
路径 abspath = os.path.abspath(path) 文件绝对路径 C:\Users\xxx\Desktop\ospag /home/xxx/ospag /Users/xxx/Desktop/ospag
路径 path_split = os.path.split(path) path分割成目录和文件名二元组返回 ('C:\\Users\\xxx\\Desktop', 'ospag') ('/home/xxx', 'ospag') ('/Users/xxx/Desktop', 'ospag')
路径 dirname = os.path.dirname(path) 目录(文件夹)绝对路径 C:\Users\xxx\Desktop /home/xxx /Users/xxx/Desktop
路径 basename = os.path.basename(path) 返回path最后的文件名 ospag ospag ospag
路经检查 exists = os.path.exists(path) 路径是否存在 True/False
路经检查 isabs = os.path.isabs(path) 如果path是绝对路径 True/False
路经检查 isfile = os.path.isfile(path) 如果path是一个存在的文件 True/False
路经检查 isdir = os.path.isdir(path) 如果path是一个存在的目录(文件夹) True/False
目录(文件夹)生成 os.mkdir('dirname') 生成单级目录(文件夹) 相当于shell中mkdir dirname 无返回, 如果已经有目录(文件夹)就报错
目录(文件夹)生成 os.makedirs('dirname1/dirname2') 可生成多层递归目录(文件夹) 无返回, 如果已经有目录(文件夹)就报错
组合路径 path_join = os.path.join( path1[, path2[, ...]]) 将多个路径组合后返回 第一个绝对路径之前的参数将被忽略 `` `` ``
文件信息 listdir = os.listdir('dirname') 列出指定目录下的所有文件和子目录, 包括隐藏文件,并以列表方式打印 ['os_test.py'] ['os_test.py'] ['os_test.py']
文件信息 stat = os.stat('path/filename') 获取文件/目录信息 os.stat_result(st_mode=16877, st_ino=111537267, st_dev=16777223, st_nlink=6, st_uid=501, st_gid=20, st_size=192, st_atime=1654416456, st_mtime=1654406254, st_ctime=1654406254) os.stat_result(st_mode=16877, st_ino=111537267, st_dev=16777223, st_nlink=6, st_uid=501, st_gid=20, st_size=192, st_atime=1654416456, st_mtime=1654406254, st_ctime=1654406254) os.stat_result(st_mode=16877, st_ino=111537267, st_dev=16777223, st_nlink=6, st_uid=501, st_gid=20, st_size=192, st_atime=1654416456, st_mtime=1654406254, st_ctime=1654406254)
文件信息 fsize = os.path.getsize(path) 文件字节大小 0(int类型) 4096(int类型) 192(int类型)
文件信息 getatime = os.path.getatime(path) 返回path所指向的文件或者 目录的最后存取时间 1654416456.911321 1654416456.911321 1654416456.911321
文件信息 getmtime = os.path.getmtime(path) 返回path所指向的文件或者 目录的最后修改时间 1654416456.911321 1654416456.911321 1654416456.911321
文件操作 rename = os.rename( "oldname", "newname") 重命名文件/目录 `` `` ``
文件操作 os.remove() 删除一个文件 `` `` ``
chdir = os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd `` `` ``
curdir = os.curdir 返回当前目录: (‘.’) `` `` ``
pardir = os.pardir 获取当前目录的父目录字符串名:(‘..’) `` `` ``
removedirs = os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录, 如若也为空,则删除,依此类推 `` `` ``
rmdir = os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错; 相当于shell中rmdir dirname `` `` ``
system = os.system("bash command") 运行shell命令,直接显示 `` `` ``
normpath = os.path.normpath( os.path.join ( os.path.abspath(__file__) ,'..','..','..')) 表示返回当前文件的上上上层目录 `` `` ``

os_test.py

  1. import io
  2. import sys
  3. sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
  4. import os
  5. linesep = os.linesep
  6. print("输出当前平台使用的行终止符,win下为”\t\n”,Linux下为”\n”")
  7. print(linesep)
  8. pathsep = os.pathsep
  9. print("输出用于分割文件路径的字符串 win下为;,Linux下为:")
  10. print(pathsep)
  11. name = os.name
  12. print("输出字符串指示当前使用平台。win->’nt’; Linux->’posix’")
  13. print(name)
  14. environ_keys = os.environ.keys()
  15. print("系统全部环境变量")
  16. print(environ_keys)
  17. ## environ_setdefault = os.environ.setdefault("key_name", "value")
  18. ## print("设置系统环境变量")
  19. ## print(environ_setdefault)
  20. ## environ_get = os.environ.get("key_name")
  21. ## print("获取系统环境变量")
  22. ## print(environ_get)
  23. ## environ_update = os.environ["key_name"] = value2
  24. ## print("修改系统环境变量")
  25. ## print(environ_update)
  26. ## # del(os.environ["key_name"])
  27. ## # print("删除系统环境变量")
  28. path = os.getcwd()
  29. print("当前工作目录")
  30. print(path)
  31. p = os.sep
  32. print("系统路径分隔符")
  33. print(p)
  34. abspath = os.path.abspath(path)
  35. print("文件绝对路径")
  36. print(abspath)
  37. path_split = os.path.split(path)
  38. print("path分割成目录和文件名二元组返回")
  39. print(path_split)
  40. dirname = os.path.dirname(path)
  41. print("文件夹绝对路径")
  42. print(dirname)
  43. basename = os.path.basename(path)
  44. print("返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即`os.path.split(path)的第二个元素")
  45. print(basename)
  46. exists = os.path.exists(path)
  47. print("路径是否存在:True/False")
  48. print(exists)
  49. isabs = os.path.isabs(path)
  50. print("如果path是绝对路径,返回True")
  51. print(isabs)
  52. isfile = os.path.isfile(path)
  53. print("如果path是一个存在的文件,返回True。否则返回False")
  54. print(isfile)
  55. isdir = os.path.isdir(path)
  56. print("如果path是一个存在的目录,则返回True。否则返回False")
  57. print(isdir)
  58. ## os.mkdir('dirname')
  59. ## print("生成单级目录(文件夹) 相当于shell中mkdir dirname, 无返回,如果已经有目录(文件夹)就报错")
  60. ## os.makedirs('dirname1/dirname2')
  61. ## print("生成多层递归目录")
  62. ## path_join = os.path.join(path1[, path2[, ...]])
  63. ## print("将多个路径组合后返回 第一个绝对路径之前的参数将被忽略")
  64. ## print(path_join)
  65. listdir = os.listdir(path)
  66. print("列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印")
  67. print(listdir)
  68. stat = os.stat(path)
  69. print("获取文件/目录信息")
  70. print(stat)
  71. stat = os.stat(path)
  72. print("获取文件/目录信息")
  73. print(stat)
  74. fsize = os.path.getsize(path)
  75. print("文件字节大小")
  76. print(type(fsize))
  77. print(fsize)
  78. getatime = os.path.getatime(path)
  79. print("返回path所指向的文件或者目录的最后存取时间")
  80. print(getatime)
  81. getmtime = os.path.getmtime(path)
  82. print("返回path所指向的文件或者目录的最后修改时间")
  83. print(getmtime)
  84. ## rename = os.rename("oldname","newname")
  85. ## print("重命名文件/目录")
  86. ## print(rename)
  87. ## # os.remove()
  88. ## # print("删除一个文件")
  89. ## chdir = os.chdir("dirname1")
  90. ## print("改变当前脚本工作目录;相当于shell下cd")
  91. ## print(chdir)
  92. ## curdir = os.curdir
  93. ## print("返回当前目录: (‘.’)")
  94. ## print(curdir)
  95. ## pardir = os.pardir
  96. ## print("获取当前目录的父目录字符串名:(‘..’)")
  97. ## print(pardir)
  98. ## removedirs = os.removedirs('dirname1')
  99. ## print("若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推")
  100. ## print(removedirs)
  101. ## rmdir = os.rmdir('dirname')
  102. ## print("删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname")
  103. ## print(rmdir)
  104. ## system = os.system("bash command")
  105. ## print("运行shell命令,直接显示")
  106. ## print(system)
  107. ## normpath = os.path.normpath(os.path.join(os.path.abspath(__file__),'..','..','..'))
  108. ## print("表示返回当前文件的上上上层目录")
  109. ## print(normpath)

更换全部文件的文件名

replace.py

  1. ## 把全部图片去掉空格
  2. import os
  3. def rename_images_in_directory(directory):
  4. """
  5. 去掉指定目录下所有图片文件名中的空格。
  6. 参数:
  7. directory (str): 需要处理的目录路径。
  8. """
  9. # 支持的图片扩展名
  10. image_extensions = ('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff')
  11. # 遍历目录中的所有文件
  12. print(os.listdir(directory))
  13. for filename_0 in os.listdir(directory):
  14. print(directory + '/' + filename_0)
  15. if filename_0 == "replace.py":
  16. continue
  17. if filename_0 == ".DS_Store":
  18. continue
  19. for filename in os.listdir(directory + '/' + filename_0):
  20. print(filename)
  21. # # 检查文件是否是图片
  22. # if filename.lower().endswith(image_extensions):
  23. # 新文件名去掉空格
  24. new_filename = filename.replace(' ', '') # 可以替换为其他字符
  25. # 构建完整的文件路径
  26. old_file_path = os.path.join(directory + '/' + filename_0, filename)
  27. new_file_path = os.path.join(directory + '/' + filename_0, new_filename)
  28. # 重命名文件
  29. os.rename(old_file_path, new_file_path)
  30. print(f"已重命名: '{filename}' -> '{new_filename}'")
  31. # 使用示例
  32. directory_path = '/a/a/a' # 替换为你的目录路径
  33. rename_images_in_directory(directory_path)

放到文件夹里,这个文件夹里有小文件夹,小文件夹里有图片,运行python replace.py可以把文件夹里的全部文件去掉空格