Python的文件操作(2)

Python os 模块简介

Python 的 os 模块提供了一种使用操作系统特定功能的便携式方式。它允许我们执行许多常见的操作系统任务,如文件和目录操作、环境变量管理、进程管理等。os 模块是 Python 标准库的一部分,因此不需要额外安装即可使用。

导入 os 模块

要使用 os 模块中的函数和属性,首先需要导入模块:

1
import os

或者,如果只需要使用 os 模块中的某些特定功能,可以按需导入:

1
from os import path, remove, rename, system

文件和目录操作

获取当前工作目录

使用 os.getcwd() 函数可以获得当前的工作目录路径。

1
2
current_directory = os.getcwd()
print("Current Working Directory:", current_directory)

改变当前工作目录

使用 os.chdir(path) 可以改变当前的工作目录到指定路径。

1
os.chdir('/path/to/new/directory')

列出目录内容

使用 os.listdir(path) 可以列出指定目录下的所有文件和子目录名称。

1
2
3
files_and_directories = os.listdir('/path/to/directory')
for item in files_and_directories:
print(item)

创建目录

  • 使用 os.mkdir(path) 创建一个新目录。
  • 使用 os.makedirs(path) 创建一个目录,包括任何必要的中间目录(递归创建)。
1
2
os.mkdir('new_directory')
os.makedirs('parent_directory/child_directory')

删除目录

  • 使用 os.rmdir(path) 删除一个空目录。
  • 使用 os.removedirs(path) 递归删除空目录链。
1
2
os.rmdir('empty_directory')
os.removedirs('parent_directory/child_directory')

移动或重命名文件/目录

使用 os.rename(old_path, new_path) 可以移动或重命名文件或目录。

1
os.rename('old_file.txt', 'new_file.txt')

删除文件

使用 os.remove(path)os.unlink(path) 可以删除文件。

1
os.remove('file_to_delete.txt')

检查文件或目录是否存在

使用 os.path.exists(path) 来检查文件或目录是否存在。

1
2
3
4
if os.path.exists('some_file.txt'):
print("File exists")
else:
print("File does not exist")

检查路径是目录还是文件

使用 os.path.isdir(path)os.path.isfile(path)函数判断路径是目录还是文件

环境变量

获取环境变量

使用 os.getenv(key, default=None) 获取环境变量的值。如果指定了默认值并且环境变量不存在,则返回默认值。

1
2
path_var = os.getenv('PATH')
print("PATH environment variable:", path_var)

设置环境变量

在某些情况下,你可以使用 os.environ 字典来设置或修改环境变量。请注意,这些更改只在当前进程中有效,并且不会影响系统的环境变量。

1
os.environ['MY_VARIABLE'] = 'my_value'

进程管理

执行系统命令

使用 os.system(command) 可以执行一个系统命令并返回命令的退出状态。

1
os.system('ls -l')  # 在 Unix/Linux/MacOS 上列出当前目录内容

启动新进程

对于更复杂的进程管理,可以使用 subprocess 模块,它是 os 模块中类似功能的更强大替代品。subprocess 提供了更好的控制力和灵活性,例如可以通过管道与子进程通信。

路径操作

os.path 子模块提供了处理文件路径的函数。这里有几个常用的例子:

  • os.path.join(path, *paths) - 将多个路径组合成一个。
  • os.path.basename(path) - 返回路径的基本名称(即最后一个组件)。
  • os.path.dirname(path) - 返回路径的目录名部分。
  • os.path.split(path) - 将路径分割为一对 (头, 尾)。
  • os.path.splitext(path) - 分离文件名和扩展名。
  • os.path.abspath(path) - 返回绝对路径。
  • os.path.normpath(path) - 规范化路径,消除冗余分隔符和上层引用。

示例

1
2
3
4
5
6
7
8
9
10
11
full_path = os.path.join(os.getcwd(), 'folder', 'file.txt')
base_name = os.path.basename(full_path)
dir_name = os.path.dirname(full_path)
head_tail = os.path.split(full_path)
file_ext = os.path.splitext(full_path)

print(f"Full Path: {full_path}")
print(f"Base Name: {base_name}")
print(f"Dir Name: {dir_name}")
print(f"Head and Tail: {head_tail}")
print(f"File Extension: {file_ext}")

总结

os 模块是一个非常强大的工具,它使我们可以方便地与操作系统进行交互。从简单的文件和目录操作到复杂的环境变量管理和进程控制,os 模块都能提供相应的支持。如果你需要更高级的功能,比如启动和管理子进程,那么应该考虑使用 subprocess 模块。通过掌握 os 模块,你可以在 Python 中轻松实现跨平台的操作系统级任务。


Python的文件操作(2)
http://example.com/2024/12/05/Python的文件操作(2)/
作者
Morningstars
发布于
2024年12月5日
许可协议