实用Python:文件与目录管理的17个技巧

今天我们要一起探索的是Python编程中的一个非常实用且基础的领域——文件与目录管理。无论是处理个人数据、自动化办公任务还是构建复杂的软件系统,这些技巧都将大大提升你的工作效率。准备好了吗?让我们一起动手吧!

1. 打开与读取文件

目标:学习如何安全地打开文件并读取内容。

技巧

  • 使用with open()语句自动管理文件资源,防止忘记关闭文件。
  • 示例代码:
with open('example.txt', 'r') as file:content = file.read()
print(content)

这段代码会打开名为’example.txt’的文件,读取其全部内容并打印出来,之后自动关闭文件。

2. 逐行读取

技巧

  • 使用for line in file:逐行读取文件,适合处理大文件。
  • 示例:
with open('example.txt', 'r') as file:for line in file:print(line.strip())  # strip()移除行尾换行符

3. 写入文件

目标:学会向文件追加或覆盖内容。

  • 使用'w'模式覆盖原有内容,'a'模式追加内容。
  • 示例(追加):
with open('example.txt', 'a') as file:file.write("\nHello, Python!")

4. 创建新文件

技巧

  • 使用open函数以写入模式('w')打开不存在的文件即可创建它。
  • 注意,这会覆盖同名文件。

5. 目录操作

  • 使用os模块来操作目录。
  • 示例:列出当前目录下的所有文件和子目录。
import os
print(os.listdir())

6. 检查路径存在

  • 使用os.path.exists(path)检查路径是否存在。
  • 示例:
if os.path.exists('new_directory'):print("Directory exists!")
else:os.mkdir('new_directory')  # 创建目录

7. 文件重命名

  • 使用os.rename(oldname, newname)重命名文件。
  • 注意:跨目录移动文件时,也可以用此方法。

8. 删除文件

  • 使用os.remove(filename)小心删除文件。
  • 删除前最好检查文件是否存在,避免错误。

9. 遍历目录树

  • 使用os.walk(top)来递归地遍历目录树。
  • 示例:
for root, dirs, files in os.walk('.'):  # '.'表示当前目录for name in files:print(os.path.join(root, name))

10. 文件路径操作

  • pathlib模块提供了一种更面向对象的方式来处理路径。
  • 示例:
from pathlib import Path
my_file = Path('my_folder/my_file.txt')
my_file.touch()  # 创建文件
print(my_file.name)  # 输出文件名

11. 读写二进制文件

  • 对于图片、音频等二进制文件,使用'rb''wb'模式。
  • 示例(读取图片):
with open('image.jpg', 'rb') as file:image_data = file.read()

12. 错误处理

  • 在文件操作中,使用try...except处理可能的异常,如文件不存在错误(FileNotFoundError)。
  • 示例:
try:with open('nonexistent.txt', 'r') as file:print(file.read())
except FileNotFoundError:print("文件未找到,请检查路径。")

通过这些步骤,你已经掌握了Python文件与目录管理的基础和一些进阶技巧。


进阶与高级应用

13. 批量重命名文件

技巧:利用循环和字符串操作,批量重命名文件,这对于整理大量文件特别有用。

  • 示例代码(将一个目录下所有.jpg文件重命名为序列格式):
import osdirectory = 'image_folder'
counter = 1
for filename in os.listdir(directory):if filename.endswith(".jpg"):  # 确定是.jpg文件new_filename = f"image_{counter}.jpg"src = os.path.join(directory, filename)dst = os.path.join(directory, new_filename)os.rename(src, dst)counter += 1

14. 使用shutil模块进行文件操作

  • shutil模块提供了高级文件和文件集合操作,如复制、移动文件和目录。
  • 文件复制
import shutil
shutil.copy('source.txt', 'destination.txt')
  • 目录复制(包括目录下所有内容):
shutil.copytree('source_folder', 'destination_folder')

15. 文件压缩与解压

  • 使用zipfile模块处理.zip文件,tarfile处理.tar文件。
  • 压缩文件
import zipfile
with zipfile.ZipFile('archive.zip', 'w') as zipf:zipf.write('file_to_compress.txt')
  • 解压文件
with zipfile.ZipFile('archive.zip', 'r') as zip_ref:zip_ref.extractall('unzip_folder')

16. 高效读写大数据文件

  • 对于非常大的文件,可以考虑分块读写,避免一次性加载到内存中。
  • 分块读取
chunk_size = 1024 * 1024  # 1MB
with open('large_file.txt', 'r') as f:while True:chunk = f.read(chunk_size)if not chunk:breakprocess(chunk)  # 假设process是处理数据的函数

17. 文件路径的智能处理 - pathlib的高级用法

  • 利用Path对象的灵活性,可以更自然地操作路径。
  • 创建路径链接
from pathlib import Path
link = Path('shortcut').symlink_to('target_folder')
  • 检查文件类型
if my_file.is_file():print("是文件")
elif my_file.is_dir():print("是目录")

通过这些高级技巧,你的Python文件与目录管理能力将进一步提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/26263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三生随记——梦魇之枕

第一章:搬入新家 在迷雾笼罩的小镇边缘,伫立着一座年代久远的木屋。李晴站在屋外,打量着这座看似平静却充满神秘感的居所。因为工作的原因,她不得不暂时搬离喧嚣的城市,来到这个陌生的地方。 木屋内部陈旧却别有一番风…

品牌渠道健康发展的关键与方法

一个品牌的渠道健康与否对其长期发展至关重要。品牌虽多,但并非所有产品都能成为品牌,创建品牌需大量精力,而让品牌长久健康发展则需多方面努力。 力维网络服务众多知名品牌,总结出一些渠道治理方法供品牌参考。首先,管…

【linux】(7)文本分析awk

awk 用于分析、过滤和生成报告。 基本用法 awk pattern {action} filename常用选项 -F:指定字段分隔符 awk -F, {print $1} filename例子:使用逗号作为字段分隔符,并打印第一列。 -v:定义变量 awk -v varvalue BEGIN {print va…

分享5款让大家电脑更好用的软件

​ 电脑是我们日常生活和工作中不可缺少的工具,今天给大家推荐了五款让电脑更好用的软件。 1.系统清理——CCleaner ​ CCleaner是一款系统优化和隐私保护工具,可以清理无用文件、浏览器缓存、回收站内容等,释放磁盘空间,提升系…

【linux网络(二)】网络基础之套接字编程

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 Linux网络 1. 前言2. 端口号详…

2024下半年软考中级系统集成项目管理师应该如何备考?

2024年软考系统集成项目管理工程师安排在下半年考试,今天跟大家分享一下软考中级系统集成项目管理师的考试备考规划。 报考要求 系统集成项目管理师考试报名没有任何学历、年龄、职业等条件的限制,只要年满18岁就可以报名。 适合人群 各政府部门及事…

任何成为一名优秀的AI产品经理,看完这篇就懂了

(背景:之前做AI咨询,对接公司内部AI产品经理经理,外部也对接过很多甲方AI产品经理。后来出来也拿过好几家公司AI产品经理的offer) 1.AI产品经理是什么 回答这个问题前我们首先得理清楚什么是AI产品经理,它和传统的互…

JavaLambda表达式 - 操作数组

在Java中,Lambda表达式通常与函数式接口一起使用,以便能够以更简洁的方式表示函数或操作。然而,Java的数组本身并不直接支持Lambda表达式,因为数组是原生数据类型(对于基本类型数组)或对象的固定大小的集合…

nginx安装和配置ModSecurity

ModSecurity 是一个开放源代码的 Web 应用防火墙 (WAF),可以帮助保护 Web 服务器免受各种攻击。以下是如何在 Nginx 上安装和配置 ModSecurity 的详细步骤。 一. 安装 ModSecurity (1). 安装依赖 在安装 ModSecurity 之前,需要先…

半导体光电子学最后总结(3)光子晶体

Matrix theory 波传输矩阵 (Wave-Transfer Matrix) 散射矩阵 (Scattering Matrix) 光在均匀介质中的传播公式矩阵化 Relation between Scattering Matrix and Wave-Transfer Matrix 级联系统的投射/反射系数:艾里公式 (Airy Formulas) 无损对称系统 斜入射波的传输…

❤vue2项目webpack打包的优化策略

❤ vue2项目webpack打包的优化策略 (优化前) 现在我们的打包时间为: >打包体积大小为: 1、去除开发环境和生产环境提示以及日志 开发环境和生产环境的打印处理 生产环境去除console.log打印的两种方式 通过环境变量控制co…

终成大流:CDM+AI彻底重塑数据备份市场

进入2024年,CDM市场又迎来高光时刻。 先有Cohesity上演“蛇吞象”并购Veritas数据备份与数据管理业务,并在新一轮融资中获得IBM、NVIDIA两大巨头的战略投资;后有Rubrik获得资本市场认可,以64亿美元市值成功登陆纽交所。两大CDM明…

[Unity学习] 背景视差因子计算,远近背景移动距离差

public Camera cam;public Transform trans;Vector2 startPosiotion;float startZ;//此物距离trans的z距离private float zDistance > transform.position.z - trans.transform.position.z;void Start(){startPosiotion transform.position;startZ transform.position.z;}…

免费!快速!干货!手把手教你如何在个人电脑上搭建你自己的大模型服务!

大模型发展如火如荼,虽然大模型的能力强大,但是大模型也是非常昂贵的!不管是训练还是推理,都需要耗费大量的机器,而且机器的硬件资源,比如GPU、TPU等都有一定的要求。 因此,业界的同行们&#x…

docker——环境搭建

准备知识 一、Docker官方架构 ​ docker使用C/S架构模式; ​ Docker 仓库(Registry) ​ Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub 供了庞大的镜像集合供使用。 ​ Docker daemon ​ Docker daemon 是服务器组件&#…

Lua搭建网站后台教程

本文讲解如何使用二进制发布包和FastWeb网站管理工具搭建站点 FastWeb网站管理工具 使用该工具可快速在Windows平台部署。支持官方或三方模块的自动安装、日志调试、版本更新等。 1、下载最新版本压缩包 2、解压到任意目录(建议英文) 3、运行 ①点击 [设置]->[安装] 部…

DEV-C++小游戏吃星星(1.5)

吃星星1.5版导航 ★★★★★ 吃星星(1.5)★★★★★ ★★★★该版本简介更新说明★★★★ ★★★分部代码★★★ ★头文件命名空间变量★ ★★结构体★★ ★辅助结构体★ ★角色结构体★ ★星星结构体★ ★打印结构体★ ★加载中结构体★ ★游…

macOS 15 beta (24A5264n) Boot ISO 原版可引导镜像下载

macOS 15 beta (24A5264n) Boot ISO 原版可引导镜像下载 iPhone 镜像、Safari 浏览器重大更新、备受瞩目的游戏和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:https://sysin.org/blog/macOS-Sequoia-boot-iso/,查看最新版…

[手游] 三色绘恋S Mobile Link

语音合成TTS: 文字转成语音的工具 WPS免登录一键修改器: 去除烦人的登录且能正常使用 故事简介: 深秋的雨季即将到来,正值那个为人所熟知的故事发生的前一年—— 地点:湖北省的重点高中,武汉师贰高校。 新学年开始,各…

LeetCode | 2879.显示前三行

在 pandas 中,可以使用 head() 方法来读取 DataFrame 的前几行数据。如果想读取指定数量的行,可以在 head() 方法中传入一个参数 n,读取前 n 行 import pandas as pddef selectFirstRows(employees: pd.DataFrame) -> pd.DataFrame:retur…