os 模块
大家好!这个章节我们要深入了解 Python 的 os 模块。这个模块是与操作系统进行交互的关键工具,提供了很多方便的函数,帮助我们进行文件管理、路径操作、进程管理等。你可以把它看作是一个操作系统的“桥梁”,让你在不同操作系统之间轻松切换。通过 os 模块,你可以编写跨平台的代码,避免系统差异带来的问题。
简介
Python 的内置库 os(Operating System Interface 提供了与操作系统交互的函数,允许用户与操作系统进行各种操作,如文件和目录操作、环境变量访问、进程管理等。
使用 os 库,您可以编写跨平台的代码,因为它提供了对操作系统底层功能的抽象,而不用担心特定操作系统的细节。
os 模块是 Python 的内置库,它提供了与操作系统进行交互的各种功能。例如,你可以通过它来操作文件和目录,管理环境变量,甚至控制进程。最棒的是,os 模块能够自动为你处理不同操作系统的差异,这意味着你只需要写一份代码,Python 会根据操作系统做相应的调整。也就是说,使用 os 模块,你可以很方便地编写跨平台的代码,省去大量与系统细节打交道的麻烦。
路径操作
os.getcwd():获取当前目录的路径
import os
directory = os.getcwd()
print("当前目录:", directory)
接下来,我们来看一些与路径操作相关的功能。os.getcwd() 用来获取当前工作目录,也就是你运行脚本时所在的文件夹。比如,当你在命令行中运行 Python 脚本时,os.getcwd() 会告诉你脚本所在的位置。
-
os.chdir():用于改变当前的工作目录。工作目录是指当前正在执行的脚本所在的目录,通过使用
os.chdir()方法,可以在脚本执行过程中切换到不同的目录。
import os
# 当前工作目录
print("当前工作目录:", os.getcwd())
# 切换到指定目录
os.chdir("/path/to/directory")
# 切换后的工作目录
print("切换后的工作目录:", os.getcwd())
os.chdir() 用来改变当前的工作目录。举个例子,你可以在脚本执行的过程中切换到另一个目录,这对于管理文件和数据非常有用。它就像给你的脚本提供了灵活的移动能力。
| path 方法 | 说明 |
|---|---|
os.path.abspath(path) |
返回绝对路径 |
os.path.basename(path) |
返回文件名 |
os.path.dirname(path) |
返回文件路径 |
os.path.split(path) |
分割路径 |
os.path.join(path) |
拼接路径 |
os.path.exists(path) |
判断路径是否存在 |
os.path.isdir(path) |
判断是否是目录 |
os.path.isfile(path) |
判断是否是文件 |
os.path.getsize(path) |
获取文件大小 |
os.path.abspath(path):获取绝对路径。path是要获取绝对路径的路径。
import os
# 获取绝对路径
absolute_path = os.path.abspath('relative/path/to/file.txt')
print("Absolute Path:", absolute_path)
os.path.abspath() 将相对路径转换为绝对路径。如果你传入一个文件的相对路径,它会返回这个文件在文件系统中的完整路径。这个方法非常适合处理不确定的文件位置。
os.path.basename(path):返回指定路径的基本名称(不包含父目录路径)
import os
# 获取基本名称
base_name = os.path.basename('/path/to/file.txt')
print("Base Name:", base_name)
os.path.basename() 会从完整路径中提取出文件的名称部分。如果你给它一个路径,返回的就是文件名本身。例如,从 /path/to/file.txt 中,它会返回 file.txt。
os.path.dirname(path):返回指定路径的父目录路径。
import os
# 获取父目录路径
parent_directory = os.path.dirname('/path/to/file.txt')
print("父目录为:", parent_directory)
os.path.dirname() 用来获取一个路径的父目录路径。例如,对于 /path/to/file.txt,它会返回 /path/to。这个方法常常在需要修改或管理目录结构时使用。
os.path.split(path):用于将一个路径拆分为目录部分和文件名部分。
import os
path = '/home/user/file.txt'
result = os.path.split(path)
print(result)
os.path.split() 将路径分成两部分,目录和文件名。例如,/home/user/file.txt 会被拆分为 /home/user 和 file.txt,方便你单独操作路径和文件。
os.path.join(path):用于连接多个路径部分。它将多个路径片段组合在一起,形成一个新的路径字符串。
import os
path1 = '\home\user'
path2 = 'file.txt'
result = os.path.join(path1, path2)
print(result)
os.path.join() 用来连接多个路径片段,它会根据不同操作系统的要求自动选择合适的路径分隔符。这个方法非常有用,尤其是在处理跨平台的路径时,能够确保路径的正确性。
os.path.exists(path)判断路径是否存在(可以是文件或目录)
import os
# 判断路径是否存在
path_to_check = '/path/to/file.txt'
if os.path.exists(path_to_check):
print("路径存在")
else:
print("路径不存在")
os.path.exists() 用来检查某个路径是否存在。它不仅可以用来判断文件是否存在,也可以判断目录是否存在。非常适合用在需要验证路径的情况下。
os.path.isdir(path)判断是否是目录
import os
# 判断路径是否是目录
directory_path = '/path/to/directory'
if os.path.isdir(directory_path):
print("它是一个目录")
else:
print("它不是一个目录或路径不存在")
os.path.isdir() 判断给定路径是否是一个目录。它会返回 True 如果路径是目录,否则返回 False。如果路径不存在,它也会返回 False。
os.path.isfile(path)判断是否是文件
import os
# 判断路径是否是文件
file_path = '/path/to/file.txt'
if os.path.isfile(file_path):
print("它是一个文件")
else:
print("它不是文件或路径不存在.")
os.path.isfile() 判断给定路径是否是一个文件。如果路径是一个文件,它会返回 True,否则返回 False。这个方法对文件管理非常有帮助。
os.path.getsize(path)获取文件大小
import os
print(os.path.getsize("main.py"))
os.path.getsize() 返回指定文件的大小,单位是字节。对于大型文件的处理来说,这个方法很有用,能够帮助你快速获取文件的大小。
目录和文件操作
os.listdir():列出当前目录内容
import os
# 获取目录内容
directory_path = '/path/to/directory'
content = os.listdir(directory_path)
print("Directory Content:", content)
接下来是一些常用的目录和文件操作。os.listdir() 列出指定目录中的所有文件和子目录。它返回一个包含所有文件和目录名的列表。这个方法非常适合用来查看一个目录中有哪些文件。
os.mkdir():创建一个新目录
import os
# 创建新目录
new_directory = '/path/to/new_directory'
os.mkdir(new_directory)
os.mkdir() 用来创建一个新的目录。如果目录不存在,它会自动创建。如果目录已经存在,它会抛出一个错误。
os.makedirs():递归创建多级目录
# 创建多级目录
nested_directory = '/path/to/nested/directory'
os.makedirs(nested_directory)
os.makedirs() 可以一次性创建多个层级的目录。如果路径中某些目录不存在,它会自动创建所有缺失的目录。这个方法非常适合在需要创建多层目录结构时使用。
os.rmdir():删除空目录
import os
# 删除目录
directory_to_delete = '/path/to/directory_to_delete'
os.rmdir(directory_to_delete)
os.rmdir() 用来删除空目录。如果目录中有文件或其他目录,它会抛出错误。
os.rename():重命名目录
import os
# 重命名目录
old_directory_name = '/path/to/old_directory'
new_directory_name = '/path/to/new_directory'
os.rename(old_directory_name, new_directory_name)
os.rename() 用来重命名文件或目录。它既可以用于修改目录名,也可以用于修改文件名。
os.remove():删除文件(只能删除文件,不能删除目录)
import os
# 删除指定的文件
file_to_delete = '/path/to/file.txt'
os.remove(file_to_delete)
os.remove() 用来删除文件。如果给它传入一个目录路径,它会抛出错误。因此,如果要删除目录,应该使用 os.rmdir()。
其它操作
os.name:获取系统名称,在 Windows 上,os.name值为nt。在 Linux、macOS,os.name为posix。
import os
# 获取当前平台名称
platform_name = os.name
print("Platform Name:", platform_name)
除了上述操作,os 模块还提供了一些其他实用的功能。os.name 返回当前操作系统的名称。在 Windows 上返回 nt,在 Linux 或 macOS 上返回 posix。这个值常用于跨平台脚本的编写中,以便根据操作系统的不同采取不同的操作。
os.chmod(path, mode):更改文件权限模式。path是要更改权限的文件路径,mode是权限模式,通常用八进制表示,如0o755
import os
# 更改文件权限模式为-rwxr-xr-x
file_path = '/path/to/file.txt'
os.chmod(file_path, 0o755)
os.chmod() 用来改变文件的权限。mode 参数是八进制表示的权限模式,例如 0o755 表示用户有读、写、执行权限,其他用户有读和执行权限。
os.sep:用于表示操作系统特定的路径分隔符。在 Windows 操作系统上,路径分隔符是反斜杠\;而在 POSIX 系统(如 Linux、macOS 等)上,路径分隔符是正斜杠/。
import os
# 获取路径分隔符
path_separator = os.sep
print("Path Separator:", path_separator)
os.sep 返回当前操作系统使用的路径分隔符。在 Windows 上,它返回 \,在 POSIX 系统(如 Linux 和 macOS)上,它返回 /。你可以用它来确保路径的正确性,避免在不同操作系统中出错。
总结
- 路径操作
- 目录和文件操作
- 其它操作
os 模块提供了非常强大且丰富的功能,帮助我们进行路径操作、文件管理、目录管理和系统交互。无论是创建、删除文件,还是检查路径的存在性、获取文件的大小,os 模块都能高效地完成这些任务。而且它提供的跨平台支持,使得代码在不同操作系统间具有很好的兼容性。