Python 文件和目录管理(os)

目录(或文件夹)是文件和子目录的集合

在 Linux 中,操作系统提供了很多的命令(例如:​ ​ls​​​、​ ​cd​​​),用于文件和目录管理。在 Python 中,有一个 ​ ​os​​ 模块,也提供了许多便利的方法来管理文件和目录。

|版权声明:一去、二三里,未经博主允许不得转载。

os 模块

​os​​​:语义为操作系统。所以,​ ​os​​ 模块提供的肯定是操作系统相关的功能了(与具体的平台无关)。

如果用 ​ ​dir()​​​ 查看 ​ ​os​​,会发现内容相当多。下面,只列出文件和目录的相关方法:

​getcwd()​

获取当前工作目录

​chdir(path)​

将当前工作目录更改为指定路径

[En]

Change the current working directory to the specified path

​listdir(path=None)​

列出指定目录中的文件名。如果 ​ ​path​​​ 为 ​ ​None​​​,则使用 ​ ​path='.'​​。

​mkdir(path, mode=511, *, dir_fd=None)​

创建目录

​makedirs(name, mode=511, exist_ok=False)​

递归创建多层目录

​rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)​

重命名文件或目录

​remove(path, *, dir_fd=None)​

删除文件

​rmdir(path, *, dir_fd=None)​

删除目录

​removedirs(name)​

递归删除目录,尝试从子目录到父目录逐层删除,如果目录不为空,则抛出异常。

[En]

Recursively delete the directory, try to delete it layer by layer from the subdirectory to the parent directory, and throw an exception if the directory is not empty.

​walk(top, topdown=True, onerror=None, followlinks=False)​

遍历 ​ ​top​​​ 路径下的所有子目录,返回一个包含 3 个元素的元组:​ ​(dirpath, dirnames, filenames)​​。

​os.curdir​

指代当前目录(​ ​'.'​​)

​os.pardir​

指代上一级目录(​ ​'..'​​)

​os.sep​

路径分割符(Windows 为 ​ ​'\\'​​​,Linux 为 ​ ​'/'​​)

​os.linesep​

行终止符(Windows 为 ​ ​'\r\n'​​​,Linux 为 ​ ​'\n'​​)

​os.name​

指代当前使用的操作系统(Windows 系统为 ​ ​'nt'​​​,Linux 为 ​ ​'posix'​​)

简单认识 ​ ​os​​ 模块后,来看如何使用 – 输出当前的操作系统:

如果是 ​ ​posix​​​,说明系统是 Linux;如果是 ​ ​nt​​,则是 Windows 系统。

获取当前工作目录

获取当前工作目录的方法有两种:

[En]

There are two ways to get the current working directory:

  • ​getcwd()​​:以 unicode 字符串的形式返回
  • ​getcwdb()​​:以 bytes 字符串的形式返回

更改当前工作目录

可以使用 ​ ​chdir()​​ 更改当前工作目录:

注意: 在 Windows 中,经常也会使用反斜杠(​ ​\​​​),这时使用转义序列(​ ​\\​​)更安全。

列出文件和目录

目录中的所有文件和子目录可以使用 ​ ​listdir()​​ 列出:

注意: 如果没有指定路径,将从当前目录返回。

创建目录

可以使用 ​ ​mkdir()​​ 创建目录:

注意: 如果未指定完整路径,则将在当前目录中创建。

重命名文件或目录

​rename()​​ 可以重命名文件或目录,第一个参数为旧名称,第二个参数为新名称:

如您所见,无论目录是否为空,都可以成功重命名。

[En]

As you can see, it can be renamed successfully regardless of whether the directory is empty or not.

删除文件或目录

可以使用 ​ ​remove()​​​ 删除文件,使用 ​ ​rmdir()​​ 删除空目录:

注意:​rmdir()​​​ 只能删除空目录,无法删除非空目录。否则,会引发 ​ ​OSError​​。

要删除非空目录,需要借助 ​ ​shutil​​​ 模块,使用 ​ ​rmtree()​​:

但是,复制、移动文件的相关函数居然在 ​ ​os​​ 模块中不存在!原因是复制文件并非由操作系统提供的系统调用。

幸运的是,​ ​shutil​​​ 模块提供了 ​ ​copy()​​​、​ ​move()​​​ 相关的函数,还可以在 ​ ​shutil​​​ 模块中找到很多实用函数,它们可以看做是 ​ ​os​​ 模块的补充。

遍历目录

​walk()​​​ 是遍历目录常用的方法,它返回一个包含 3 个元素的元组:​ ​(dirpath, dirnames, filenames)​​:

  • ​dirpath​​:以字符串形式返回该目录下所有的绝对路径
  • ​dirnames​​:以列表形式返回每一个绝对路径下的目录
  • ​filesnames​​:以列表形式返回该路径下所有文件

使用命令 ​ ​tree​​,以树状图列出目录的内容:

使用 ​ ​walk()​​ 方法:

Original: https://blog.51cto.com/waleon/5525601
Author: waleon
Title: Python 文件和目录管理(os)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/504672/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球