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

liftword2个月前 (02-25)技术文章17

在文件操作中,路径和目录是不可避免的重要部分。掌握路径的处理和目录操作可以大大提高文件管理效率。今天,我们将学习如何使用 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}")

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

相关文章

DeepSeek Python脚本定时任务设置:三大主流方案全面解析

在Python脚本定时任务设置中,根据不同的操作系统和需求场景,可采用以下三种主流方案:一、Windows系统方案(任务计划程序)1. 创建任务路径通过【控制面板】→【管理工具】→【任务计划程序】→【...

Python高手进阶:深入os.path模块高效处理路径问题

Python的os.path模块是os模块中关于路径操作部分的子模块,它提供了大量用于处理文件和目录路径的函数,特别适用于跨平台的文件系统操作。无论是在Windows、Linux还是macOS上,os...

Python os.path模块使用指南:轻松处理文件路径

前言在Python编程中,文件和目录的操作是非常重要的一部分。为了方便用户进行文件和目录的操作,Python标准库提供了os模块。其中,os.path子模块提供了一些处理文件路径的函数和方法。本文主要...

Python自动化测试之模块、包与路径知识讲解

一、前言小伙伴们,大家好呀,最近这几天因为端午假期的原因,有三天没有更文了,今天呢还是接着python基础来讲,这篇文章主要讲解Python中模块、包以及路径的相关知识点内容,是自动化测试框架设计的基...

教你用 Python 爬取 Baidu 文库全格式文档

考虑到现在大部分小伙伴使用 Python 主要因为爬虫,那么为了更好地帮助大家巩固爬虫知识,加深对爬虫的理解,选择了爬取百度文库作为我们的目标。废话不多说,我们开始。TXT、DOCX 爬取与保存这是小...