二十七、深入浅出Python中的 os模块

「@Author: Runsen」
当初学Python的时候 , 把一些标准库和第三方开源库学的七零八落 , 不成系统 , 正好趁这个机会来系统的整理一下 , 先从Python常用的标准库os开始吧 。
os【二十七、深入浅出Python中的 os模块】OS模块简单的来说它是一个Python的系统编程的操作模块 , 可以处理文件和目录这些我们日常手动需要做的 操作 。可以查看OS模块的帮助文档 。
import os #导入os模块help(os)#查看os模块帮助文档 , 里面详细的模块相关函数和使用方法获取当前系统首先我们需要先导入os模块:直接打印os.name 。
import osprint(os.name)#若是Windows则输出'nt' , 若是Linux/Unix , 则是'posix'获取当前文件的绝对路径# 获取当前文件的绝对路径 桌面上的demo.pyabsolute_file_path = os.path.abspath(__file__)print(absolute_file_path)打印结果:C:\Users\YIUYE\Desktop\demo.py获取当前目录函数os.getcwd():功能:获取当前目录 , python的工作目录 。
cwd = os.getcwd()print(cwd打印结果:C:\Users\YIUYE\Desktop判断文件是否存在 , 返回值为布尔型import osfile_path = r"C:\Users\YIUYE\Desktop\demo.py"has_file = os.path.exists(file_path)print("file path: [{}] is exist: {}".format(file_path, has_file))file path: [C:\Users\YIUYE\Desktop\demo.py] is exist: True获取文件的名称import os# 获取文件的名称file_name = os.path.basename(__file__)print(file_name)打印结果:demo.py文件重命名old_file = r"C:\Users\YIUYE\Desktop\demo.py"# 或者old_file = "C:/Users/YIUYE/Desktop/demo.py"前面没有rnew_file = r"C:\Users\YIUYE\Desktop\demo1.py"# 重命名文件os.rename(old_file, new_file)注意点:Unix使用斜杆/ 作为路径分隔符 , 而web应用最新使用在Unix系统上面 , 所以目前所有的网络地址都采用 斜杆/作为分隔符 。
Windows由于使用 斜杆/ 作为DOS命令提示符的参数标志了 , 为了不混淆 , 所以采用 反斜杠\ 作为路径分隔符 。 所以目前windows系统上的文件浏览器都是用 反斜杠\ 作为路径分隔符 。
随着发展 , DOS系统已经被淘汰了 , 命令提示符也用的很少 , 很多时候斜杆和反斜杠在大多数情况下可以互换 , 没有影响 。
记住:

  • 浏览器地址栏网址使用 斜杆/ ;
  • windows文件浏览器上使用 反斜杠\ ;
  • 出现在html url() 属性中的路径 , 指定的路径是网络路径 , 所以必须用 斜杆/ ;
出现在普通字符串中的路径 , 如果代表的是windows文件路径 , 则使用 反斜杠\ 需要在前面加r;如果代表的是网络文件路径 , 则必须使用 斜杆/ 。
具体报错和指示如下图 。
二十七、深入浅出Python中的 os模块文章插图
二十七、深入浅出Python中的 os模块文章插图
如果是Mac没有反斜杠\ , 和Linux一样都是只有斜杆/
创建文件夹os.makedirs创建多级目录
# 路径中的多个文件夹都不存在时 , 可以递归创建 , code和code1文件夹本身没有forders_path = r"C:\Users\YIUYE\Desktop\code\code1"os.makedirs(forders_path)os.path.mkdir:只能创建一个文件夹 ,code文件夹存在 , 才能创建code1文件夹 , 如果code文件夹不存在 , 则会出错 。
forder_path = r"C:\Users\YIUYE\Desktop\code\code1"os.mkdir(forder_path)获取文件夹下的所有文件名forder_path = r"D:\学习资料"# 获取文件夹code下的所有文件名 , 以列表的形式返回file_names = os.listdir(forder_path)print(file_names)获取文件夹下的所有文件夹和文件(无递归遍历)print(os.scandir(r"D:\学习资料"))打印结果:返回的是可迭代对象 , 我们用for循环迭代一下遍出结果 , 这里进行判断 , 寻找文件 , 而不是文件夹
for f in os.scandir(r"D:\学习资料"):if not f.is_file(): #is_file判断是否是文件print('yes',f)else:print('no:', f)
二十七、深入浅出Python中的 os模块文章插图
将path分割成路径名和文件名os.path.split函数返回一个路径的目录名和文件名
print(os.path.split(r"C:\Users\YIUYE\Desktop\demo.py"))print(os.path.split(r"C:\Users\YIUYE\Desktop\demo.py")[0])print(os.path.split(r"C:\Users\YIUYE\Desktop\demo.py")[1])打印结果:('C:\\Users\\YIUYE\\Desktop', 'demo.py')C:\Users\YIUYE\Desktopdemo.py拼接目录与文件名或目录os.path.join函数拼接目录与文件名或目录
print(os.path.join('I', 'am', 'Runsen'))打印结果:I\am\Runsen练习「创建一个函数 , 获取文件夹下包含子文件夹的所有文件路径 , 并且存入list输出?」