【Python文件操作】掌握文件读写和目录管理的技巧!

news2024/10/17 18:34:43

【Python文件操作】掌握文件读写和目录管理的技巧!

在现代编程中,文件操作是不可避免的一部分,尤其是在处理数据、日志、配置文件等场景下。Python 提供了强大而简洁的文件操作方法,可以轻松完成文件的读取、写入和目录管理等操作。本文将详细讲解 Python 文件操作的各种技巧,并通过代码示例展示如何在日常编程中灵活运用这些方法。

目录

  1. 什么是文件操作?
  2. 文件打开与关闭的基础
  3. 读取文件的多种方式
  4. 向文件写入数据的技巧
  5. 文件的追加操作
  6. 文件路径和目录操作
  7. 删除、重命名和移动文件
  8. 文件和目录的权限管理
  9. 使用 with 语句的上下文管理
  10. 文件操作的常见错误与异常处理
    在这里插入图片描述

1. 什么是文件操作?

文件操作是指对文件进行读取、写入、创建、删除等操作的过程。无论是保存数据、记录日志,还是进行数据分析,文件操作都是至关重要的一部分。Python 提供了非常灵活的文件操作库,可以方便地处理各种文件类型,如文本文件、二进制文件、JSON、CSV 等。

在文件操作中,我们主要进行以下几类操作:

  • 读操作:从文件中读取数据。
  • 写操作:将数据写入文件。
  • 追加操作:在已有文件末尾添加数据。
  • 管理文件和目录:对文件的重命名、删除,以及目录的创建、遍历等操作。
    在这里插入图片描述

2. 文件打开与关闭的基础

在 Python 中,使用内置的 open() 函数可以打开文件。打开文件时,你可以指定不同的模式,如读、写或追加模式。最常见的模式有:

  • "r":读取模式。文件必须存在,否则抛出错误。
  • "w":写入模式。如果文件不存在,会创建新文件;如果存在,会清空内容。
  • "a":追加模式。如果文件不存在,会创建新文件;如果存在,会在末尾追加内容。

打开文件后,必须手动关闭文件,以确保资源被正确释放。这可以通过 close() 方法实现。

# 打开文件进行读取
file = open("example.txt", "r")
content = file.read()  # 读取文件内容
print(content)
file.close()  # 关闭文件

在这里插入图片描述

3. 读取文件的多种方式

Python 提供了几种常用的读取文件内容的方法。常见的有 read()readline()readlines()

  • read():一次性读取整个文件。
  • readline():每次读取一行,适合逐行处理大文件。
  • readlines():一次性读取所有行,并将其存储为列表。
# 读取整个文件内容
with open("example.txt", "r") as file:
    content = file.read()
    print(content)

# 逐行读取文件内容
with open("example.txt", "r") as file:
    for line in file:
        print(line.strip())  # 使用 strip() 去除行末的换行符

在这里插入图片描述

4. 向文件写入数据的技巧

向文件写入数据同样简单。通过 open() 函数使用 "w" 模式打开文件,可以将内容写入文件中。如果文件不存在,Python 会自动创建新文件。

# 写入数据到文件
with open("output.txt", "w") as file:
    file.write("Hello, Python!\n")
    file.write("File writing is simple.\n")

需要注意的是,使用 "w" 模式会覆盖已有文件的内容。如果希望保留现有内容并在末尾追加,则需要使用 "a" 模式。
在这里插入图片描述

5. 文件的追加操作

使用 "a" 模式可以在文件末尾追加内容,而不会覆盖原有内容。这在记录日志或持续保存数据时非常有用。

# 向文件末尾追加数据
with open("output.txt", "a") as file:
    file.write("This is an additional line.\n")

在这里插入图片描述

6. 文件路径和目录操作

在文件操作中,常常需要处理文件路径。Python 的 ospathlib 模块可以轻松进行路径管理和目录操作。

获取文件的绝对路径

import os

# 获取文件的绝对路径
file_path = os.path.abspath("example.txt")
print(file_path)

创建目录

可以使用 os.makedirs() 创建目录,包括不存在的父级目录:

import os

# 创建一个新目录
os.makedirs("new_folder/sub_folder", exist_ok=True)

列出目录中的文件

可以使用 os.listdir() 列出某个目录下的所有文件和文件夹:

# 列出当前目录下的所有文件和文件夹
files = os.listdir(".")
print(files)

在这里插入图片描述

7. 删除、重命名和移动文件

Python 提供了对文件进行删除、重命名和移动的功能,主要通过 os 模块实现。

删除文件

import os

# 删除文件
if os.path.exists("output.txt"):
    os.remove("output.txt")

重命名文件

# 重命名文件
os.rename("example.txt", "renamed_example.txt")

移动文件

可以结合 shutil 模块实现文件的移动:

import shutil

# 将文件移动到新目录
shutil.move("renamed_example.txt", "new_folder/renamed_example.txt")

在这里插入图片描述

8. 文件和目录的权限管理

在某些情况下,可能需要修改文件或目录的权限。Python 提供了 os.chmod() 函数来修改权限。

import os

# 修改文件权限,使其可读写
os.chmod("example.txt", 0o666)

在这里插入图片描述

9. 使用 with 语句的上下文管理

在文件操作中,确保文件在使用完后被关闭是很重要的。with 语句可以自动管理资源的释放,因此推荐使用它来打开和处理文件。

# 使用 with 语句打开文件,自动关闭文件
with open("example.txt", "r") as file:
    content = file.read()
    print(content)

使用 with 语句不需要手动调用 close(),它可以确保即使出现异常,文件也会被正确关闭。
在这里插入图片描述

10. 文件操作的常见错误与异常处理

在文件操作中,可能会遇到文件不存在、权限不足或其他问题。为防止程序崩溃,建议使用 try-except 语句进行异常处理。

try:
    with open("non_existent_file.txt", "r") as file:
        content = file.read()
except FileNotFoundError:
    print("File not found. Please check the file path.")
except PermissionError:
    print("You do not have permission to read this file.")
except Exception as e:
    print(f"An unexpected error occurred: {e}")

在这里插入图片描述

总结

本文详细介绍了 Python 文件操作的各种技巧,包括文件的读写、追加、路径处理、目录管理以及常见的文件操作错误处理。掌握这些技巧后,开发者可以更灵活地处理文件和目录操作,并在日常编程中应用这些技能。通过合理使用 with 语句和异常处理,可以确保程序的健壮性和可维护性。

文件操作是 Python 编程中的基础技能之一,无论是开发自动化脚本、处理数据文件,还是构建复杂的应用程序,都离不开文件的读写和管理。希望本文能帮助你更好地理解和应用 Python 的文件操作技巧。
在这里插入图片描述

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

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

相关文章

005_django基于Python的乡村居民信息管理系统设计与实现2024_106f2qg9

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…

SpringMVC源码-异常处理机制

定义一个异常处理类TestErrorController: Controller public class TestErrorController {RequestMapping("/exception")public ModelAndView exception(ModelAndView view) throws ClassNotFoundException {view.setViewName("index");throw new ClassNot…

Mysql主从集群搭建+分库分表+ShardingSphere(实战)

什么是 ShardingSphere 介绍 Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。 Apache ShardingSphere 设计哲学为 Database Plus,…

CRMEB标准版Mysql修改sql_mode

数据库配置 1.宝塔控制面板-软件商店-MySql-设置 2.点击配置修改,查找sql-mode或sql_mode (可使用CtrlF快捷查找) 3.复制 NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 然后替换粘贴,保存 注:MySQL8.0版本的 第三步用…

Redis --- 第四讲 --- 常用数据结构 --- string类型

一、认识数据类型和编码方式 有序集合,相当于除了存储member之外,还需要存储一个score(权重,分数) Redis底层在实现上述数据结构的时候,会在源码层面,针对上述实现进行特定的优化,来…

文生图:Stable Diffusion、Midjourny

前言 Stable Diffusion(SD)和Midjourney(MJ)是当前流行的两款AI图像生成工具,它们各有特点和优势: **- Stable Diffusion是完全开源的,**这意味着用户可以免费使用,并且有技术能力…

excel如何把年龄转换为日期

总体的思路 我们从一个核心的日期函数出发 我们首先需要年月日 我的数据大概是这样的。 获取年份 第一步:提取岁前面的数字 left(目标单元格,“从左到右获取第几个字符”)第二步:替换掉数字后面的岁 第三步:新增一个单元格 在里面填入年 第四步:用…

Android系統Audio hal

一.Android系統Audio hal简介 Android系统的音频硬件抽象层(HAL)是系统与硬件之间的桥梁,允许音频应用和服务访问底层音频硬件,而无需直接与硬件交互。 主要组件: 音频 HAL 接口:定义了应用和服务如何调用音频硬件的规范。典型的音频操作包括播放、录制、音量控制等。 …

N1060A 50/85GHz精密型波形分析模块

N1060A 50/85GHz精密型波形分析模块 苏州新利通 概述 Keysight N1060A 精密型波形分析仪是一款数字通信分析仪(DCA)模块,可与 Keysight N1000A 主机兼容。 与是德科技的所有其他 DCA 模块一样,N1060A 提供了广泛的配置和性能选…

【C语言】数组函数冒泡排序bubble sort

数组:对于n个数字进行排序,就必须定义n个变量来存储。那么为了统一处理,选择数组就十分便捷了。 函数:将排序算法写到函数中,后续遇到所有的排序需求,都可以直接进行调用。 冒泡排序:受气泡在水…

HDFS详细分析

目录 一、HDFS架构 (1)Block - 数据块 (2)MetaData - 元数据 (3)NameNode - 主结点 (4)DataNode - 从结点 (5)SecondaryNameNode 二、HDFS的特点 &…

【19楼-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

2024年下软考——信息系统运行管理员考前30天冲刺学习指南!!!

2024下半年软考已经迫在眉睫了,还没有开始备考的小伙伴赶紧行动起来。为了帮助大家更好的冲刺学习,特此提供一份信息系统运行管理员考前30天学习指南。本指南包括考情分析、学习规划、冲刺攻略三个部分,可以参考此指南进行最后的复习要领&…

javaWeb项目-Springboot+vue-校园论坛系统功能介绍

本项目源码(点击下方链接下载):java-springbootvue-xx学校校园论坛信息系统实现源码(项目源码-说明文档)资源-CSDN文库 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot…

鼠标移入盒子,盒子跟随鼠标移动

demo效果: 鼠标移入盒子,按下鼠标,开启移动跟随移动模式,再次按下关闭移动模式 涉及主要属性 在元素上单击鼠标按钮时输出鼠标指针的坐标: var x event.pageX; // 获取水平坐标 var y event.pageY; // 获取垂直坐标元素offsetL…

【含开题报告+文档+PPT+源码】基于SSM的景行天下旅游网站的设计与实现

开题报告 随着互联网的快速发展,旅游业也逐渐进入了数字化时代。作为一个旅游目的地,云浮市意识到了互联网在促进旅游业发展方面的巨大潜力。为了更好地推广云浮的旅游资源,提高旅游服务质量,云浮市决定开发一个专门的旅游网站。…

【python】用tk做一个简单的商品搜索更新展示的桌面应用

import tkinter as tk from tkinter import ttk import pandas as pddata_list [{id:1,name: 苹果, price: 6.5,tag:水果},{id:2,name: 香蕉, price: 2.5,tag:水果},{id:3,name: 葡萄, price: 8.5,tag:水果},{id:4,name: 橘子, price: 4.5,tag:水果}, ]df pd.DataFrame(data_…

SwiftUI 如何取得 @Environment 中 @Observable 对象的绑定?

概述 从 SwiftUI 5.0(iOS 17)开始,苹果推出了全新的 Observation 框架。它作为下一代内容改变响应者全面参与到数据流和事件流的系统中。 有了 Observation 框架的加持,原本需要多种状态类型的 SwiftUI 视图现在只需要 3 种即可大…

海康NVR管理平台EasyNVR多品牌NVR管理工具实现智能化视频管理介入现代化工厂

一、方案背景 在当今这个日新月异的时代,制造业作为国民经济的支柱之一,正经历着前所未有的变革。随着信息技术的飞速发展,工厂的现代化管理手段准确性也越来越高,越来越丰富,各种先进的技术手段比如视频监控系统&…

R语言医学数据分析实践-R编程环境的搭建

【图书推荐】《R语言医学数据分析实践》-CSDN博客 《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com) R语言编程_夏天又到了的博客-CSDN博客 R语言对编程环境的要求不高,可以在多种操作系统平台上…