跳转至

Os模块

Python 的 os 模块提供了一些用于操作文件和目录的常用功能。以下是一些常见的 os 模块操作,包括文件和目录的管理、路径操作、环境变量等。

1. 文件和目录操作

创建目录

  • os.mkdir(path):创建一个目录。
  • os.makedirs(path):递归地创建目录,创建多层目录。
import os

# 创建单一目录
os.mkdir('new_directory')

# 递归创建多层目录
os.makedirs('parent/child')

删除目录

  • os.rmdir(path):删除空目录。
  • os.removedirs(path):递归地删除空目录。
  • os.rmdiros.removedirs 只能删除空目录,若要删除非空目录需要使用 shutil 模块的 rmtree 方法。
import os

# 删除空目录
os.rmdir('empty_directory')

删除文件

  • os.remove(path):删除指定文件。
  • os.unlink(path):与 remove 等价,也是删除指定文件。
import os

# 删除文件
os.remove('file_to_delete.txt')

列出目录内容

  • os.listdir(path):列出指定路径下的所有文件和目录(不包括子目录内容)。
import os

# 列出当前目录下的文件和文件夹
files = os.listdir('.')
print(files)

判断文件或目录是否存在

  • os.path.exists(path):判断路径是否存在。
  • os.path.isdir(path):判断路径是否为目录。
  • os.path.isfile(path):判断路径是否为文件。
import os

# 判断目录是否存在
if os.path.exists('test_directory'):
    print('Directory exists')

# 判断是否是文件
if os.path.isfile('file.txt'):
    print('This is a file')

重命名文件或目录

  • os.rename(old, new):重命名文件或目录。
import os

# 重命名文件
os.rename('old_name.txt', 'new_name.txt')

复制文件(使用 shutil

  • shutil.copy(src, dst):复制文件。
  • shutil.copytree(src, dst):递归复制目录。
import shutil

# 复制文件
shutil.copy('source.txt', 'destination.txt')

# 递归复制目录
shutil.copytree('source_dir', 'destination_dir')

2. 路径操作

获取当前工作目录

  • os.getcwd():返回当前工作目录的路径。
import os

# 获取当前工作目录
current_directory = os.getcwd()
print(current_directory)

更改当前工作目录

  • os.chdir(path):改变当前工作目录。
import os

# 更改工作目录
os.chdir('/path/to/directory')

路径拼接

  • os.path.join(path1, path2, ...):将多个路径组件拼接成一个完整路径。
import os

# 拼接路径
full_path = os.path.join('folder', 'subfolder', 'file.txt')
print(full_path)  # 输出:folder/subfolder/file.txt

获取文件名和扩展名

  • os.path.basename(path):返回路径中的文件名。
  • os.path.splitext(path):返回文件的扩展名。
import os

# 获取文件名
file_name = os.path.basename('/path/to/file.txt')
print(file_name)  # 输出:file.txt

# 获取文件扩展名
file_name, file_extension = os.path.splitext('/path/to/file.txt')
print(file_extension)  # 输出:.txt

获取文件的绝对路径

  • os.path.abspath(path):返回路径的绝对路径。
import os

# 获取文件的绝对路径
absolute_path = os.path.abspath('file.txt')
print(absolute_path)

获取路径的父目录

  • os.path.dirname(path):返回路径的父目录。
import os

# 获取父目录
parent_dir = os.path.dirname('/path/to/file.txt')
print(parent_dir)  # 输出:/path/to

3. 文件权限和修改时间

获取文件或目录的权限

  • os.stat(path):返回一个 os.stat_result 对象,包含文件的权限、大小、最后修改时间等信息。
import os

# 获取文件或目录的权限
file_stat = os.stat('file.txt')
print(file_stat.st_mode)  # 输出文件的权限信息(权限为十进制数字)

修改文件权限

  • os.chmod(path, mode):改变文件或目录的权限,mode 是一个权限值。
import os

# 修改文件的权限为只读
os.chmod('file.txt', 0o444)  # 只读权限

获取文件或目录的最后修改时间

  • os.path.getmtime(path):返回文件的最后修改时间,结果为 Unix 时间戳。
import os

# 获取文件的最后修改时间
mod_time = os.path.getmtime('file.txt')
print(mod_time)

修改文件的访问时间或修改时间

  • os.utime(path, times):修改文件的访问和修改时间。
import os

# 修改文件的时间
os.utime('file.txt', (1624374198, 1624374198))  # 设置访问时间和修改时间

4. 环境变量操作

获取环境变量

  • os.getenv('VAR_NAME'):获取指定环境变量的值。
import os

# 获取环境变量
path = os.getenv('PATH')
print(path)

设置环境变量

  • os.environ['VAR_NAME'] = 'value':设置环境变量。
import os

# 设置环境变量
os.environ['MY_VAR'] = 'my_value'

删除环境变量

  • os.environ.pop('VAR_NAME'):删除环境变量。
import os

# 删除环境变量
os.environ.pop('MY_VAR', None)

5. 系统信息与进程操作

获取操作系统类型

  • os.name:获取当前操作系统的类型。
import os

# 获取操作系统类型
print(os.name)  # 输出 'posix', 'nt', 'os2', 等等

获取操作系统的详细信息

  • os.uname():返回一个包含操作系统详细信息的元组(仅限类 Unix 系统)。
import os

# 获取操作系统的详细信息(仅限 Unix-like 系统)
system_info = os.uname()
print(system_info)

执行外部命令

  • os.system(command):执行系统命令。
import os

# 执行系统命令
os.system('echo "Hello World!"')

启动新进程

  • os.spawn():用于启动新进程(更底层的方法)。

6. 进程管理

获取当前进程的 ID

  • os.getpid():返回当前进程的 ID。
import os

# 获取当前进程的 ID
pid = os.getpid()
print(pid)

获取父进程的 ID

  • os.getppid():返回父进程的 ID。
import os

# 获取父进程的 ID
ppid = os.getppid()
print(ppid)

总结

os 模块提供了丰富的函数来处理文件系统、环境变量、路径操作和进程管理。常用的操作包括文件和目录的创建、删除、重命名,路径处理,权限修改以及与操作系统的交互等。掌握 os 模块是进行系统编程、文件管理和自动化任务的重要步骤。