Python文件移动与目录操作教程:os、shutil、pathlib实战指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Python文件系统操作基础

文件系统操作是Python开发中最常见的任务之一。这个过程包括创建和删除文件、复制、移动、重命名文件,以及创建目录和检查其是否存在。文件操作构成了流程自动化、Web开发、数据分析、配置管理和应用部署的基础。

Python提供了丰富的内置库,用于高效处理文件系统。主要工具包括os、shutil和pathlib模块。这些库几乎涵盖了所有可能的使用场景——从基本操作到高级任务。

在Python中移动文件

使用shutil.move()函数

当需要将文件从一个目录移动到另一个目录时,最简单高效的方法是使用shutil.move()函数。该函数的工作方式类似于Linux和Unix操作系统中的mv命令。

import shutil

shutil.move('source/file.txt', 'destination/file.txt')

shutil.move()函数可以自动处理单个文件和整个目录。移动文件时,可以同时对其进行重命名。需要注意的是,如果目标文件夹中已存在同名文件,它将被覆盖且不会发出警告。

移动时创建目录

移动文件时,经常需要创建新目录。以下方法可以解决这个问题:

import os
import shutil

src = 'data/report.txt'
dst_dir = 'archive'
os.makedirs(dst_dir, exist_ok=True)
shutil.move(src, os.path.join(dst_dir, 'report.txt'))

os.makedirs()函数配合exist_ok=True参数,可以在目录不存在时创建整个目录链,如果目录已存在也不会报错。

移动目录

shutil.move()函数同样支持移动整个目录:

shutil.move('old_folder', 'new_location/old_folder')

复制文件与创建链接

基础文件复制

Python提供了多个功能各异的函数用于复制文件:

import shutil

# 复制文件内容
shutil.copy('file.txt', 'backup/file.txt')

copy()函数仅复制文件内容,不保留元数据。如需完整复制并保留所有文件属性,请使用copy2():

shutil.copy2('file.txt', 'backup/file.txt')

复制目录

要复制整个目录及其所有内容,请使用copytree()函数:

shutil.copytree('project', 'project_backup')

创建硬链接

硬链接是文件系统中现有文件的另一个名称:

import os

os.link('file.txt', 'linked_file.txt')

硬链接意味着一个物理文件可以通过多个不同路径访问。文件内容的更改会反映在所有链接中。可以使用os.stat().st_nlink检查硬链接的数量。

目录管理

创建目录

Python提供了两个主要函数用于创建目录:

import os

# 创建单个目录
os.mkdir('new_folder')

# 创建嵌套目录结构
os.makedirs('parent/child/grandchild', exist_ok=True)

mkdir()函数仅创建单个目录,如果目录已存在则会引发FileExistsError异常。

博客

书籍推荐