网站首页 > 技术文章 正文
在文件操作中,路径和目录是不可避免的重要部分。掌握路径的处理和目录操作可以大大提高文件管理效率。今天,我们将学习如何使用 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. 练习任务
- 编写一个函数 list_files_by_extension(directory, extension),列出指定目录中所有特定后缀的文件。
- 编写一个函数 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}")
通过完成这些任务,你将对路径和目录操作有更深入的理解。下一篇我们将学习如何操作压缩文件,敬请期待!
猜你喜欢
- 2025-03-06 手写一个 Python "病毒"
- 2025-03-06 Python学习(十五):OS模块的常用函数详解
- 2025-03-06 Python史上最全文件类型读写库大盘点!什么?还包括音频、视频?
- 2025-03-06 Python处理excel数据,原来这么简单,VBA要尴尬了
- 2025-03-06 Python 中的一些命令行命令
- 2025-03-06 30s带你使用Python打包exe文件,并修改其图标
- 2025-03-06 大数据—DolphinScheduler开源可视化工作流任务调度平台
- 2025-03-06 python如何分离文件名和扩展名
- 2025-03-06 Python番外篇之代码编译与字节码
- 265℃Python短文,Python中的嵌套条件语句(六)
- 264℃python笔记:for循环嵌套。end=""的作用,图形打印
- 263℃PythonNet:实现Python与.Net代码相互调用!
- 258℃Python实现字符串小写转大写并写入文件
- 257℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 117℃原来2025是完美的平方年,一起探索六种平方的算吧
- 98℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 90℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)