程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

20 天学 Python 文件操作:Day 7 文件路径与目录操作

hfteth 2025-03-06 15:26:16 技术文章 13 ℃

在文件操作中,路径和目录是不可避免的重要部分。掌握路径的处理和目录操作可以大大提高文件管理效率。今天,我们将学习如何使用 Python 操作文件路径和目录。


1. 什么是文件路径?

文件路径是操作系统定位文件的方式,可以是绝对路径相对路径

  • 绝对路径:从根目录开始的完整路径。例如:/home/user/documents/example.txt。
  • 相对路径:相对于当前工作目录的路径。例如:documents/example.txt。

Python 的 os 模块和 pathlib 模块提供了强大的路径处理功能。


2. 使用 os 模块操作路径

os 模块中与路径相关的常用函数:

检查路径是否存在

import os

path = "example.txt"
if os.path.exists(path):
    print(f"路径 '{path}' 存在!")
else:
    print(f"路径 '{path}' 不存在!")

判断是文件还是目录

if os.path.isfile(path):
    print(f"'{path}' 是一个文件。")
elif os.path.isdir(path):
    print(f"'{path}' 是一个目录。")
else:
    print(f"'{path}' 既不是文件也不是目录。")

拼接路径

base_dir = "/home/user"
sub_dir = "documents"
file_name = "example.txt"

full_path = os.path.join(base_dir, sub_dir, file_name)
print(f"完整路径为: {full_path}")

获取文件的目录名和文件名

file_path = "/home/user/documents/example.txt"
print(os.path.dirname(file_path))  # 输出:/home/user/documents
print(os.path.basename(file_path))  # 输出:example.txt

3. 使用 pathlib 模块操作路径

pathlib 是更现代、更易用的路径操作库。

创建 Path 对象

from pathlib import Path

file_path = Path("/home/user/documents/example.txt")
print(file_path)

检查路径是否存在

if file_path.exists():
    print("路径存在!")
else:
    print("路径不存在!")

获取文件名和父目录

print(file_path.name)  # 输出:example.txt
print(file_path.parent)  # 输出:/home/user/documents

拼接路径

new_path = file_path.parent / "new_file.txt"
print(new_path)  # 输出:/home/user/documents/new_file.txt

4. 操作目录

目录操作是文件管理的基础功能。

创建目录

os.makedirs("new_folder/sub_folder", exist_ok=True)
print("目录已创建!")

删除目录

os.rmdir("new_folder/sub_folder")
print("目录已删除!")

注意:os.rmdir 只能删除空目录。

列出目录内容

for item in os.listdir("."):
    print(item)

使用 pathlib 操作目录

from pathlib import Path

dir_path = Path("new_folder")
dir_path.mkdir(parents=True, exist_ok=True)  # 创建目录
print(list(dir_path.iterdir()))  # 列出目录内容

5. 示例:清理指定目录中的文件

以下示例代码演示了如何清理一个目录中的所有 .txt 文件。

import os

def clean_txt_files(directory):
    try:
        for file_name in os.listdir(directory):
            file_path = os.path.join(directory, file_name)
            if os.path.isfile(file_path) and file_name.endswith('.txt'):
                os.remove(file_path)
                print(f"已删除文件: {file_path}")
    except Exception as e:
        print(f"清理失败: {e}")

# 测试函数
clean_txt_files("example_folder")

6. 练习任务

  1. 编写一个函数 list_files_by_extension(directory, extension),列出指定目录中所有特定后缀的文件。
  2. 编写一个函数 move_files_to_directory(source_dir, target_dir),将一个目录中的所有文件移动到另一个目录。

示例代码框架:

def list_files_by_extension(directory, extension):
    for file_name in os.listdir(directory):
        if file_name.endswith(extension):
            print(file_name)

def move_files_to_directory(source_dir, target_dir):
    os.makedirs(target_dir, exist_ok=True)
    for file_name in os.listdir(source_dir):
        full_file_path = os.path.join(source_dir, file_name)
        if os.path.isfile(full_file_path):
            os.rename(full_file_path, os.path.join(target_dir, file_name))
            print(f"已移动: {file_name}")

通过完成这些任务,你将对路径和目录操作有更深入的理解。下一篇我们将学习如何操作压缩文件,敬请期待!

最近发表
标签列表