概述
os模块提供丰富的方法用来处理 文件 和 文件夹
很多软件,如电脑端的QQ、微信、爱奇艺客户端、各个浏览器等,在运行时,会 创建一些文件夹和文件
各个电脑管家等软件,会 清理 上述软件所创建的无用 文件夹和文件
通用型开发语言,都支持文件、文件夹的操作,python的操作更加简单,本文主要讲解常用方法以及举例
下面这个网址提供很详细的方法和说明:
http://www.runoob.com/python3/python3-os-file-methods.html
导入os模块
使用os模块时,需要先导入
import os
常用属性
- linesep:换行符,windows中是
\r\n,unix、linux中是\n - sep:路径分隔符。windows中是
\,unix、linux是/。如windows的路径C:\Users\
为什么要通过属性获取换行符、路径分隔符
windows系统、unix、linux、mac等主流系统中,其 换行符 、路径分隔符 等可能不相同,如果直接将换行符、路径分隔符 写在代码 中,不能实现 跨平台 开发
比如:在windows系统上开发,将换行符\r\n、路径分隔符\ 写在代码中,但在运行时,可能是在linux系统中,可能会出现错误
所以在编程时,要动态获取 换行符 、路径分隔符
常用方法
删除文件
方法用于删除指定路径的文件,不能删除文件夹,抛出OSError
os.remove(path)
参数
path — 要移除的文件路径
返回值
该方法没有返回值
抛出异常
执行失败会抛出异常,如:文件不存在,抛错:FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'E:\\grid_lines2.png'
例子:
os.remove('C:\\Users\\mym\\desktop\\python学习\\2019\\1.txt')
重命名、移动文件和文件夹
用于重命名 文件 或 文件夹 名字,也可以改变 文件 和 文件夹 的 路径 ,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError
os.rename(src, dst)
参数
src — 要修改的目录名
dst — 修改后的目录名
返回值
该方法没有返回值
例子1:
修改文件名
os.rename('C:\\Users\\mym\\desktop\\python学习\\1.txt','C:\\Users\\mym\\desktop\\python学习\\2.txt')
例子2:
修改文件夹名,该文件夹可以有文件或子文件夹,注意: 不要打开该文件夹窗口,否则报错
os.rename('C:\\Users\\mym\\desktop\\python学习','C:\\Users\\mym\\desktop\\好好学习python')
例子3:
移动文件或文件夹
os.rename('C:\\Users\\mym\\desktop\\python学习\\2019\\3','C:\\Users\\mym\\desktop\\3')
将C:\\Users\\mym\\desktop\\python学习\\2019\\3移动到C:\\Users\\mym\\desktop\\3
返回某目录的文件和子文件夹的名字
os.listdir(path)
参数
path — 需要列出的目录路径
返回值
返回list,list中是指定路径下的文件和文件夹。
例子
l=os.listdir('C:\\Users\\mym\\desktop')
for item in l:
print(item)
获取当前工作路径
os.getcwd()
参数
无
返回值
返回当前的工作目录。
注意:
在cmd窗口中,执行 python xxx.py时,os.getcwd()返回的是当前cmd所在路径,即C:\Users\mym,不是.py文件的路径,如下图:
改变当前工作目录
改变当前工作目录到指定的路径,目录不存在会抛异常
os.chdir(path)
参数
path:要切换到的新路径。
返回值
无
创建文件夹
以数字权限模式创建目录。默认的模式为 0777 (八进制)。数字权限一般用于UNIX、linux系统
os.mkdir(path[, mode])
参数
- path — 要创建的目录
- mode — 要为目录设置的权限数字模式。默认0o777
返回值
该方法没有返回值。
例子:
import os
os.mkdir('C:\\Users\\mym\\desktop\\python学习')
创建python学习文件夹,注意,前面的文件夹必须都存在,否则报错
创建目录(递归方式)
os.makedirs() 方法用于递归创建目录。像 mkdir(), 但创建的所有文件夹,包含子目录。
os.makedirs(path[, mode])
参数
- path — 要创建的目录
- mode — 要为目录设置的权限数字模式。默认0o777
返回值
该方法没有返回值。
例子:
import os
os.makedirs('C:\\Users\\mym\\desktop\\python学习\\2019\\03')
在C:\\Users\\mym\\desktop目录下创建python学习\\2019\\03目录,不存在的目录也一并创建
删除指定文件夹
删除指定文件夹,当该文件夹 为空 的才可以删除, 否则抛出OSError。
os.rmdir(path)
参数
path — 要删除的目录路径
返回值
该方法没有返回值
例子
os.rmdir('C:\\Users\\mym\\desktop\\python学习\\2019\\3')
删除空目录(递归方式)
推荐使用:python之shutil文件、目录操作模块(推荐)
递归删除目录,如果子文件夹成功删除, 会尝试删除父文件夹,直到抛出OSError
注意:只能删除 空目录,不为空报错:OSError: [WinError 145] 目录不是空的
os.removedirs(path)
参数
path — 要移除的目录路径
返回值
该方法没有返回值
例子:
os.removedirs(r'G:\test\test2\test3')
执行结果:
- 当
test3为空时,则删除test3 - 当
test2为空时,则删除test2 - 当
test为空时,则删除test
当上面某一个目录 不为空 时,报错:OSError: [WinError 145] 目录不是空的
获取进程ID
os.getpid()
获取父进程ID
os.getppid()
获取CPU核心数
os.cpu_count()


