在 Python 中,操作文件夹(或称为目录)通常涉及创建文件夹、删除文件夹、列出文件夹中的文件和子文件夹等任务。这些操作可以通过内置的 os
和 os.path
模块来完成。下面是一些常见的文件夹操作及其示例:
导入需要的模块
import os |
创建文件夹
使用 os.mkdir()
或 os.makedirs()
来创建文件夹。os.mkdir()
用于创建单个文件夹,而 os.makedirs()
可以递归地创建所有必要的中间文件夹。
# 创建单个文件夹 | |
os.mkdir('new_folder') | |
# 递归创建文件夹(如果中间文件夹不存在,也会被创建) | |
os.makedirs('path/to/new/folder', exist_ok=True) |
exist_ok=True
参数用于防止在文件夹已存在时抛出异常。
删除文件夹
使用 os.rmdir()
删除空文件夹,使用 shutil.rmtree()
删除整个文件夹树(包括所有子文件夹和文件)。
import shutil | |
# 删除空文件夹 | |
os.rmdir('empty_folder') | |
# 删除整个文件夹树(包括非空文件夹) | |
shutil.rmtree('folder_to_remove') |
列出文件夹内容
使用 os.listdir()
或 os.scandir()
来列出文件夹中的文件和子文件夹。
# 列出文件夹中的文件和子文件夹名 | |
files_and_folders = os.listdir('some_folder') | |
print(files_and_folders) | |
# 使用 os.scandir() 更高效地遍历文件夹内容(返回目录项对象) | |
for entry in os.scandir('some_folder'): | |
print(entry.name) | |
if entry.is_file(): | |
print(f'{entry.name} is a file') | |
elif entry.is_dir(): | |
print(f'{entry.name} is a directory') |
os.scandir()
返回一个目录项对象,这些对象有 name
、path
、is_file()
和 is_dir()
等属性,可以用于进一步的操作。
检查路径是否存在
使用 os.path.exists()
来检查一个路径(文件或文件夹)是否存在。
if os.path.exists('path/to/folder'): | |
print("The folder exists.") | |
else: | |
print("The folder does not exist.") |
检查是否为文件夹
使用 os.path.isdir()
来检查一个路径是否为文件夹。
if os.path.isdir('path/to/folder'): | |
print("It's a directory.") | |
else: | |
print("It's not a directory.") |
获取文件夹路径
使用 os.path.abspath()
或 os.path.realpath()
获取绝对路径。
absolute_path = os.path.abspath('relative/path/to/folder') | |
print(absolute_path) |
遍历文件夹树
使用 os.walk()
来遍历文件夹树。
for root, dirs, files in os.walk('start_folder'): | |
print(f'Now in {root}') | |
for dir in dirs: | |
print(f'Directory: {dir}') | |
for file in files: | |
print(f'File: {file}') |
更改当前工作目录
使用 os.chdir()
来更改当前工作目录。
os.chdir('/path/to/new/working/directory') |
这些是 Python 中操作文件夹的一些基本方法。根据你的具体需求,你可能还需要处理权限问题、路径分隔符的差异(在 Windows 和 Unix-like 系统上不同)等。在处理文件和文件夹时,请确保你有足够的权限,并谨慎操作以避免数据丢失。