os
模块是 Python 中用于与操作系统进行交互的标准库之一。它提供了许多函数来执行文件和目录操作,管理进程以及与操作系统交互的其他功能。
下面是一些 os
模块中常用的函数和功能:
-
文件和目录操作:
os.getcwd()
: 返回当前工作目录的路径。os.chdir(path)
: 改变当前工作目录到指定的路径。os.listdir(path='.')
: 返回指定目录中的文件和目录的列表。os.mkdir(path)
: 创建一个目录。os.makedirs(path)
: 递归地创建目录。os.remove(path)
: 删除指定的文件。os.rmdir(path)
: 删除指定的目录。os.removedirs(path)
: 递归地删除目录。os.stat
用于获取文件或目录的状态信息。os.startfile
用于启动与文件关联的默认应用程序。
-
路径操作:
os.path.join(path1, path2, ...)
: 将多个路径组合成一个。os.path.exists(path)
: 检查指定路径是否存在。os.path.isdir(path)
: 判断指定路径是否为目录。os.path.isfile(path)
: 判断指定路径是否为文件。os.path.basename(path)
: 返回路径中的文件名部分。os.path.dirname(path)
: 返回路径中的目录部分。os.path.abspath(path)
: 返回路径的绝对路径。
-
进程管理:
os.system(command)
: 在子shell中执行系统命令。os.popen(command[, mode[, bufsize]])
: 打开一个管道返回文件对象。os.spawn*()
系列函数:以新进程执行指定的程序。os.exec*()
系列函数:用指定的程序替换当前进程。os.fork()
: 创建一个子进程(Unix/Linux 系统)。
-
环境变量:
os.environ
: 包含当前环境变量的字典。os.getenv(var_name[, default])
: 获取指定环境变量的值。
-
权限操作:
os.chmod(path, mode)
: 修改文件或目录的权限。os.chown(path, uid, gid)
: 修改文件或目录的所有者和所属组。
这些是 os
模块中的一些常见功能,它们允许 Python 程序与操作系统进行各种交互。
目录
①os.getcwd()
os.getcwd()
是 Python 中 os
模块提供的函数之一,用于获取当前工作路径(current working directory)。
import os
# 获取当前工作路径
current_working_directory = os.getcwd()
# 打印当前工作路径
print("当前工作路径:", current_working_directory)
这个函数不需要任何参数,调用它会返回一个表示当前工作路径的字符串。在上面的例子中,current_working_directory
变量将包含当前 Python 脚本或交互式环境所在的目录的路径。
②os.chdir(path)
os.chdir(path)
是 Python 中的一个函数,用于改变当前工作目录到指定的路径。
以下是 os.chdir(path)
函数的基本使用方法:
import os
# 打印当前工作目录
print("当前工作目录:", os.getcwd())
# 改变当前工作目录到指定路径
os.chdir('C:/')
# 打印改变后的工作目录
print("改变后的工作目录:", os.getcwd())
在上面的示例中,os.chdir(path)
函数将当前工作目录更改为指定的路径 'C:/'。可以将 path
替换为想要的目标目录路径。
需要注意的是,os.chdir()
函数可能会抛出异常,例如 FileNotFoundError
,如果指定的路径不存在或者没有权限进行更改。因此,在使用 os.chdir()
函数时,最好在调用前做好错误处理,以确保程序的稳定性。
③os.listdir(path='.')
os.listdir(path='.')
是 Python 中的一个函数,用于返回指定目录中的文件和子目录的列表。
以下是 os.listdir(path='.')
函数的基本使用方法:
import os
# 获取当前工作目录中的文件和子目录列表
contents = os.listdir()
# 或者可以显式地指定路径
# contents = os.listdir('/path/to/directory')
# 遍历列表并打印每个条目
for item in contents:
print(item)
在这个示例中,os.listdir()
函数返回当前工作目录中的文件和子目录的列表。你也可以显式地指定一个路径作为参数,以获取特定目录中的内容。
返回的列表包含指定目录中的所有条目的名称,包括文件和子目录。
需要注意的是,如果指定的路径不存在,os.listdir()
函数将会抛出一个 FileNotFoundError
异常。因此,在使用该函数时,最好在调用前做好错误处理,以确保程序的稳定性。
④os.mkdir(path)
os.mkdir(path)
是 Python 中的一个函数,用于创建一个新的目录(文件夹)。
以下是 os.mkdir(path)
函数的基本使用方法:
import os
# 指定要创建的目录路径
new_directory = '/path/to/new/directory'
# 创建新目录
os.mkdir(new_directory)
在这个示例中,os.mkdir()
函数将在指定路径下创建一个新的目录。需要将 path
替换为想要创建的目录的路径。
需要注意的是,如果指定的目录已经存在,os.mkdir()
函数将会抛出一个 FileExistsError
异常。因此,在创建新目录之前,最好先检查目录是否已经存在,或者使用 os.makedirs()
函数来创建目录及其父目录,以确保程序的稳定性。
⑤os.makedirs(path)
os.makedirs()
函数也是 Python 中用于创建目录的函数,不同的是,它可以递归地创建多层目录。如果其中某些目录已经存在,它会忽略这些已存在的目录。
以下是 os.makedirs()
函数的基本使用方法:
import os
# 指定要创建的目录路径
new_directory = '/path/to/new/directory'
# 创建新目录(包括其父目录,如果父目录不存在则会创建)
os.makedirs(new_directory)
与 os.mkdir()
不同,os.makedirs()
可以创建多层目录结构,即使父目录不存在也可以一并创建。这在需要创建嵌套的目录结构时非常有用。
需要注意的是,如果指定的路径中的任何一个部分是一个已经存在的文件,而不是一个目录,则会引发 FileExistsError
异常。因此,在创建目录之前,最好先检查路径的合法性,以确保程序的稳定性。
⑥os.remove(path)
os.remove(path)
是 Python 中用于删除文件的函数。它会删除指定路径下的文件。
以下是 os.remove(path)
函数的基本使用方法:
import os
# 指定要删除的文件路径
file_to_delete = '/path/to/file.txt'
# 删除文件
os.remove(file_to_delete)
在这个示例中,os.remove()
函数将删除指定路径下的文件。需要将 path
替换为要删除的文件的路径。
需要注意的是,如果指定的文件不存在,os.remove()
函数将会引发 FileNotFoundError
异常。因此,在删除文件之前,最好先检查文件是否存在,以确保程序的稳定性。如果要删除目录而不是文件,可以使用 os.rmdir()
函数,不过要确保目录是空的,否则会引发 OSError
异常。如果要删除目录及其内容,可以使用 shutil.rmtree()
函数。删除文件和目录时,请谨慎操作,以免不可逆地删除重要数据。
⑦os.rmdir(path)
os.rmdir(path)
是 Python 中用于删除空目录的函数。它会删除指定路径下的目录,前提是这个目录为空,即其中没有文件或子目录。
以下是 os.rmdir(path)
函数的基本使用方法:
import os
# 指定要删除的目录路径
directory_to_delete = '/path/to/empty_directory'
# 删除空目录
os.rmdir(directory_to_delete)
在这个示例中,os.rmdir()
函数将删除指定路径下的空目录。需要将 path
替换为要删除的目录的路径。
需要注意的是,如果指定的目录不为空,即其中包含文件或子目录,os.rmdir()
函数将引发 OSError
异常。在删除非空目录时,可以使用 shutil.rmtree()
函数,它会递归地删除整个目录树,包括目录中的所有文件和子目录。
os.removedirs(path)
函数是 Python 中用于删除目录的函数,它可以递归地删除指定路径下的所有空目录,直到遇到非空目录为止。这个函数会尽可能地删除路径中的每个目录,直到根目录为止。
以下是 os.removedirs(path)
函数的基本使用方法:
import os
# 指定要删除的目录路径
directory_to_delete = '/path/to/empty_directory'
# 递归地删除目录及其父目录(如果它们为空)
os.removedirs(directory_to_delete)
在这个示例中,os.removedirs()
函数将递归地删除指定路径下的所有空目录,直到遇到非空目录为止。需要将 path
替换为要删除的目录的路径。
需要注意的是,与 os.rmdir()
不同,os.removedirs()
可以删除多个连续的空目录,直到遇到第一个非空目录为止。如果某个目录不为空,os.removedirs()
将停止并引发 OSError
异常。
⑧os.stat(path)
os.stat()
是 Python 中用于获取文件或目录的状态信息的函数。它返回一个包含文件或目录的各种信息的命名元组(named tuple)。
以下是 os.stat()
函数的基本使用方法:
import os
# 指定要获取状态信息的文件或目录路径
path = '/path/to/file_or_directory'
# 获取指定路径的状态信息
status = os.stat(path)
# 输出状态信息
print(status)
os.stat()
函数将返回一个包含以下属性的命名元组:
st_mode
: 文件的模式(权限)。st_ino
: 文件的 inode 号。st_dev
: 文件的设备号。st_nlink
: 文件的硬链接数。st_uid
: 文件的所有者的用户 ID。st_gid
: 文件的所有者的组 ID。st_size
: 文件的大小,以字节为单位。st_atime
: 文件的最后访问时间。st_mtime
: 文件的最后修改时间。st_ctime
: 文件的创建时间。
可以通过访问返回的命名元组的属性来获取文件或目录的各种状态信息。例如,要获取文件的大小,可以使用 status.st_size
。
需要注意的是,os.stat()
函数在 Windows 和 Unix-like 系统上的行为可能会有所不同。在某些情况下,它可能不返回所有期望的属性。
⑨os.startfile()
在 Windows 平台上,可以使用 os.startfile()
函数来启动与指定文件关联的默认程序。这个函数比较方便,但是仅限于 Windows 平台使用。
以下是 os.startfile()
函数的基本使用方法:
import os
# 指定要启动的文件路径
file_to_open = 'C:\\path\\to\\file.txt'
# 使用默认关联的程序启动文件
os.startfile(file_to_open)
在这个示例中,os.startfile()
函数会打开 Windows 上与指定文件关联的默认程序,类似于双击文件在文件资源管理器中打开它。需要将 file_to_open
替换为要启动的文件的路径。
需要注意的是,os.startfile()
函数仅在 Windows 平台上可用,如果你的代码需要在其他操作系统上运行,最好使用跨平台的解决方案,如使用 subprocess.Popen()
函数。