Python 程序设计 - 21. os 模块与文件夹操作
-
引入
在实际开发中,文件系统操作是不可避免的任务之一。Python 提供了非常强大的 os 模块,它不仅能够让你执行文件操作,还可以进行目录(文件夹)操作、环境变量的操作等。
本节将重点介绍 os 模块的常用功能,特别是文件夹的创建、删除、重命名和遍历等操作。通过学习这些内容,你将能有效地管理和操作文件系统。 -
os 模块简介
os 模块是 Python 内置的标准库模块,它提供了与操作系统交互的接口。通过 os 模块,你可以进行文件和文件夹的操作,还能处理系统信息、环境变量、路径操作等。
常见的 os 模块功能包括:
1.创建、删除、重命名文件和文件夹。
2.遍历目录中的文件。
3.获取文件属性(如大小、修改时间等)。
4.操作文件路径。
常用 os 模块函数
| 函数 | 作用 |
|---|---|
| os.mkdir(path) | 创建文件夹 |
| os.makedirs(path) | 递归创建文件夹(如果父目录不存在也会创建) |
| os.rmdir(path) | 删除空文件夹 |
| os.removedirs(path) | 删除多级空文件夹 |
| os.rename(src, dst) | 重命名文件或文件夹 |
| os.listdir(path) | 返回指定目录下所有文件和文件夹的名称列表 |
| os.path.exists(path) | 判断指定路径是否存在 |
| os.path.isdir(path) | 判断指定路径是否为文件夹 |
| os.path.isfile(path) | 判断指定路径是否为文件 |
- 文件夹操作实例
(1)创建文件夹
语法
os.mkdir(path)
该方法用于在指定路径下创建一个空的文件夹。如果文件夹已存在,则会抛出 FileExistsError 错误。
案例:
import os
创建单个文件夹
folder_path = "my_folder"
if not os.path.exists(folder_path): # 判断文件夹是否已存在
os.mkdir(folder_path)
print(f"文件夹 '{folder_path}' 创建成功!")
else:
print(f"文件夹 '{folder_path}' 已存在!")
(2)递归创建文件夹
有时我们需要创建多级目录(例如 dir1/dir2/dir3),如果父目录不存在,使用 os.mkdir() 会抛出错误。此时可以使用 os.makedirs()。
语法
os.makedirs(path)
案例:
import os
递归创建文件夹
folder_path = "dir1/dir2/dir3"
if not os.path.exists(folder_path): # 判断多级文件夹是否已存在
os.makedirs(folder_path)
print(f"多级文件夹 '{folder_path}' 创建成功!")
else:
print(f"多级文件夹 '{folder_path}' 已存在!")
(3)删除文件夹
语法
os.rmdir(path) # 删除空文件夹
如果文件夹不为空,使用 os.rmdir() 会抛出 OSError 错误。如果你需要删除非空文件夹,可以使用 shutil.rmtree(),这属于 shutil 模块。
案例:
import os
删除空文件夹
folder_path = "empty_folder"
if os.path.exists(folder_path) and os.path.isdir(folder_path):
os.rmdir(folder_path)
print(f"文件夹 '{folder_path}' 删除成功!")
else:
print(f"文件夹 '{folder_path}' 不存在或不为空!")
(4)重命名文件夹
语法
os.rename(src, dst)
该方法用于重命名文件或文件夹。
案例:
import os
重命名文件夹
old_name = "old_folder"
new_name = "new_folder"
if os.path.exists(old_name):
os.rename(old_name, new_name)
print(f"文件夹 '{old_name}' 重命名为 '{new_name}' 成功!")
else:
print(f"文件夹 '{old_name}' 不存在!")
- 遍历文件夹中的文件
你可以使用 os.listdir() 方法获取文件夹中的所有文件和子文件夹名称。该方法返回一个列表,包含目录下的文件名和文件夹名。
语法
os.listdir(path)
案例:
import os
列出文件夹中的所有文件和文件夹
folder_path = "my_folder"
if os.path.exists(folder_path):
files = os.listdir(folder_path)
print(f"'{folder_path}' 文件夹中的内容:")
for file in files:
print(file)
else:
print(f"文件夹 '{folder_path}' 不存在!")
(5)判断路径是文件夹还是文件
你可以通过 os.path.isdir() 和 os.path.isfile() 来判断给定的路径是文件夹还是文件。
语法
os.path.isdir(path) # 如果是文件夹,返回 True
os.path.isfile(path) # 如果是文件,返回 True
案例:
import os
path = "some_path"
if os.path.isdir(path):
print(f"'{path}' 是一个文件夹")
elif os.path.isfile(path):
print(f"'{path}' 是一个文件")
else:
print(f"'{path}' 既不是文件也不是文件夹")
-
总结与练习题
通过本节学习,我们掌握了如何使用 os 模块进行文件夹操作,包括创建、删除、重命名文件夹,以及遍历文件夹内容等基本操作。你可以利用这些知识管理文件系统中的文件夹,提高程序的灵活性。 -
练习题(不少于 3 题)
练习 1
编写程序,在当前目录下创建一个名为 test_folder 的文件夹,如果文件夹已存在,则输出提示信息。
练习 2
编写程序,递归创建一个名为 dir1/dir2/dir3 的多级文件夹,并在其中创建一个名为 test.txt 的空文件。
练习 3
编写程序,遍历当前目录下的所有文件和文件夹,并输出它们的名称。如果是文件,则输出 "文件",如果是文件夹,则输出 "文件夹"。
练习 4
编写程序,重命名当前目录下的文件夹 old_folder 为 new_folder。 -
练习题答案
答案 1
import os
folder_path = "test_folder"
if not os.path.exists(folder_path):
os.mkdir(folder_path)
print(f"文件夹 '{folder_path}' 创建成功!")
else:
print(f"文件夹 '{folder_path}' 已存在!")
答案 2
import os
folder_path = "dir1/dir2/dir3"
if not os.path.exists(folder_path):
os.makedirs(folder_path)
print(f"多级文件夹 '{folder_path}' 创建成功!")
创建空文件
file_path = os.path.join(folder_path, "test.txt")
open(file_path, "w").close()
答案 3
import os
path = "."
files = os.listdir(path)
for file in files:
full_path = os.path.join(path, file)
if os.path.isdir(full_path):
print(f"'{file}' 是一个文件夹")
elif os.path.isfile(full_path):
print(f"'{file}' 是一个文件")
答案 4
import os
old_folder = "old_folder"
new_folder = "new_folder"
if os.path.exists(old_folder):
os.rename(old_folder, new_folder)
print(f"文件夹 '{old_folder}' 已重命名为 '{new_folder}'")
else:
print(f"文件夹 '{old_folder}' 不存在!")
通过这些练习,你已经掌握了 Python 文件夹操作的基本技能!接下来,你可以开始运用这些知识来实现更复杂的文件管理任务。
评论区