python模块os-文件和文件夹处理

概述

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')

执行结果:

  1. 当 test3 为空时,则删除 test3
  2. 当 test2 为空时,则删除 test2
  3. 当 test 为空时,则删除 test

当上面某一个目录 不为空 时,报错:OSError: [WinError 145] 目录不是空的

获取进程ID

os.getpid()

如下图:

获取父进程ID

os.getppid()

获取CPU核心数

os.cpu_count()

如下图:


原文出处:/show_1EF2Q155hwJ9.html