深入理解 Python 操作系统的 14 个 API

大家好!今天我们要聊的是Python中的操作系统模块——os。这个模块提供了很多有用的函数,帮助我们更好地与操作系统交互。无论是文件操作还是进程管理,os模块都能提供强大的支持。本文将带你一步步了解并掌握14个常用的os模块API。

1.os.name

首先,让我们看看os.name。这个属性会返回当前运行Python脚本的操作系统名称。这对于编写跨平台的代码非常有用,因为你可以通过它来判断用户正在使用哪种操作系统。

代码示例:

复制
import os print("当前操作系统名称:", os.name)1.2.3.

输出:如果你在Windows上运行这段代码,输出将是 "nt";而在Linux或Mac OS上则是 "posix"。

2.os.getcwd()

接下来是os.getcwd(),它用来获取当前工作目录的路径。这对于处理文件路径特别有帮助。

代码示例:

复制
import os print("当前工作目录:", os.getcwd())1.2.3.

输出:例如,假设你的脚本位于C:\Users\YourName\Documents目录下,那么输出将会是这个路径。

3.os.chdir(path)

os.chdir(path)可以改变当前的工作目录到指定路径。这对于需要在不同目录间切换的脚本来说非常实用。

代码示例:

复制
import os # 改变到新的工作目录 os.chdir(C:\\temp) print("新工作目录:", os.getcwd())1.2.3.4.5.

输出:如果C:\temp存在,那么输出就是该路径。

4.os.listdir(path=.)

os.listdir(path=.)返回指定目录下的所有文件和目录名。默认参数.表示当前目录。

代码示例:

复制
import os files = os.listdir(.) for f in files: print(f)1.2.3.4.5.

输出:这会列出当前目录下的所有文件和子目录。

5.os.mkdir(path)

os.mkdir(path)用于创建一个新目录。这是一个非常基础但重要的功能。

代码示例:

复制
import os # 创建新目录 os.mkdir(new_directory) print("新目录已创建")1.2.3.4.5.

输出:你会看到命令行提示“新目录已创建”,同时在你的工作目录中会出现一个名为new_directory的新目录。

6.os.makedirs(path)

os.makedirs(path)类似于os.mkdir(),但它可以创建多级目录。

代码示例:

复制
import os # 创建多级目录 os.makedirs(parent/child/subchild) print("多级目录已创建")1.2.3.4.5.

输出:即使parent和child不存在,上述代码也会创建完整的路径。

7.os.rmdir(path)

os.rmdir(path)用来删除空目录。记住,只有当目录为空时,这个函数才能成功执行。

代码示例:

复制
import os # 删除空目录 os.rmdir(new_directory) print("目录已删除")1.2.3.4.5.

输出:如果new_directory是空的,那么它会被删除,并打印出相应的信息。

8.os.remove(path)

os.remove(path)用于删除指定路径下的文件。这是一个危险的操作,请务必小心使用!

代码示例:

复制
import os # 删除文件 os.remove(test.txt) print("文件已删除")1.2.3.4.5.

输出:如果test.txt存在,那么它会被删除,并显示删除成功的信息。

9.os.path.exists(path)

os.path.exists(path) 用于检查指定路径是否存在。这是非常常用的一个功能,特别是在处理文件和目录时。

代码示例:

复制
import os path = example.txt if os.path.exists(path): print(f"{path} 存在") else: print(f"{path} 不存在")1.2.3.4.5.6.7.

输出:如果 example.txt 文件存在,则输出 “example.txt 存在”;否则输出 “example.txt 不存在”。

10.os.path.isdir(path)

os.path.isdir(path) 用于检查指定路径是否为目录。这在处理文件系统时非常有用。

代码示例:

复制
import os path = example_directory if os.path.isdir(path): print(f"{path} 是目录") else: print(f"{path} 不是目录")1.2.3.4.5.6.7.

输出:如果 example_directory 存在并且是一个目录,则输出 “example_directory 是目录”;否则输出 “example_directory 不是目录”。

11.os.path.isfile(path)

os.path.isfile(path) 用于检查指定路径是否为文件。与 os.path.isdir() 类似,这也是一个非常基础且常用的功能。

代码示例:

复制
import os path = example.txt if os.path.isfile(path): print(f"{path} 是文件") else: print(f"{path} 不是文件")1.2.3.4.5.6.7.

输出:如果 example.txt 存在并且是一个文件,则输出 “example.txt 是文件”;否则输出 “example.txt 不是文件”。

12.os.path.getsize(path)

os.path.getsize(path) 返回指定文件的大小(以字节为单位)。这对于获取文件占用的空间非常有用。

代码示例:

复制
import os path = example.txt if os.path.isfile(path): size = os.path.getsize(path) print(f"{path} 的大小为 {size} 字节") else: print(f"{path} 不存在或不是文件")1.2.3.4.5.6.7.8.

输出:如果 example.txt 存在并且是一个文件,则输出其大小;否则输出相应的错误信息。

13.os.rename(src, dst)

os.rename(src, dst) 用于重命名文件或移动文件/目录。这是一个非常实用的功能,尤其是在处理大量文件时。

代码示例:

复制
import os src = old_name.txt dst = new_name.txt if os.path.exists(src): os.rename(src, dst) print(f"{src} 已重命名为 {dst}") else: print(f"{src} 不存在")1.2.3.4.5.6.7.8.9.10.

输出:如果 old_name.txt 存在,则将其重命名为 new_name.txt 并输出相关信息;否则输出错误信息。

14.os.walk(top, topdown=True, onerror=None, followlinks=False)

os.walk(top, topdown=True, onerror=None, followlinks=False) 是一个非常强大的函数,用于遍历目录树。它可以生成目录树中的文件名,在目录树中递归地进行遍历。

代码示例:

复制
import os top = example_directory for root, dirs, files in os.walk(top): print(f"目录: {root}") for dir in dirs: print(f" 子目录: {os.path.join(root, dir)}") for file in files: print(f" 文件: {os.path.join(root, file)}")1.2.3.4.5.6.7.8.9.

输出:这段代码会遍历 example_directory 及其子目录,并打印出所有的子目录和文件路径。

实战案例:备份文件夹

现在,让我们通过一个实际的场景来综合运用这些API。假设你需要备份某个目录及其所有子目录和文件。我们可以使用 os 模块来实现这个功能。

代码示例:

复制
import os import shutil def backup_directory(source_dir, backup_dir): if not os.path.exists(backup_dir): os.makedirs(backup_dir) for root, dirs, files in os.walk(source_dir): relative_path = os.path.relpath(root, source_dir) target_path = os.path.join(backup_dir, relative_path) if not os.path.exists(target_path): os.makedirs(target_path) for file in files: source_file = os.path.join(root, file) backup_file = os.path.join(target_path, file) shutil.copy2(source_file, backup_file) source_directory = example_directory backup_directory = backup_directory backup_directory(source_directory, backup_directory) print(f"{source_directory} 已备份到 {backup_directory}")1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.

输出:这段代码会将 example_directory 及其所有子目录和文件备份到 backup_directory 中,并输出相应的信息。

总结

本文详细介绍了os模块中的14个常用API,包括了文件和目录的基本操作、路径检查以及目录树的遍历等功能。通过这些API,我们可以更方便地处理各种文件系统相关的任务。希望这些知识能够帮助你更加高效地使用Python进行开发。

THE END
本站服务器由亿华云赞助提供-企业级高防云服务器