当前位置: 首页 > news >正文

Python文件操作和管理指南:打开、读取、写入和管理文件

文章目录

  • 文件(File)
    • 打开文件
    • 使用 with ... as 语句打开文件
    • 读取文件内容
    • 读取大文件的方式
    • 逐行读取和读取全部行
    • 写文件操作
    • 文件定位
      • seek()
      • tell()
    • 关闭文件
  • 文件管理
    • 获取目录结构
    • 获取当前目录
    • 切换当前所在目录
    • 创建目录
    • 删除目录
    • 删除文件
    • 重命名文件
  • 总结
  • python精品专栏推荐
    • python基础知识(0基础入门)
    • python爬虫知识

文件(File)

通过Python程序来对计算机中的各种文件进行增删改查的操作

I/O(Input / Output)

操作文件的步骤:

  1. 打开文件
  2. 对文件进行各种操作(读、写),然后保存
  3. 关闭文件

打开文件

file_name = 'demo.txt'
file_obj = open(file_name)
print(file_obj)

提示:此处输出的是文件对象的信息。

使用 with … as 语句打开文件

file_name = 'hello'try:with open(file_name) as file_obj :print(file_obj.read())
except FileNotFoundError:print(f'{file_name} 文件不存在~~')

提示:with … as 语句可以在代码块结束时自动关闭文件。

读取文件内容

file_name = 'demo2.txt'try:with open(file_name, encoding='utf-8') as file_obj:content = file_obj.read()print(content)
except FileNotFoundError:print(f'{file_name} 这个文件不存在!')# 或者逐行读取文件内容file_name = 'demo.txt'try:with open(file_name, encoding='utf-8') as file_obj:for line in file_obj:print(line)
except FileNotFoundError:print(f'{file_name} 这个文件不存在!')

读取大文件的方式

file_name = 'demo.txt'try:with open(file_name, encoding='utf-8') as file_obj:file_content = ''chunk = 100while True:content = file_obj.read(chunk)if not content:breakfile_content += contentexcept FileNotFoundError:print(f'{file_name} 这个文件不存在!')print(file_content)

提示:对于较大的文件,使用循环读取内容,避免一次读取全部内容导致内存泄漏。

逐行读取和读取全部行

import pprint
import osfile_name = 'demo.txt'with open(file_name, encoding='utf-8') as file_obj:for line in file_obj:print(line)

或者使用 readline()readlines() 方法:

with open(file_name, encoding='utf-8') as file_obj:print(file_obj.readline(), end='')print(file_obj.readline())print(file_obj.readline())# 或者with open(file_name, encoding='utf-8') as file_obj:r = file_obj.readlines()pprint.pprint(r[0])pprint.pprint(r[1])pprint.pprint(r[2])

写文件操作

首先我们需要使用 open() 函数打开一个文件并进行操作,之后用 write() 方法向文件中写入内容。

file_name = 'demo5.txt'
with open(file_name , 'x' , encoding='utf-8') as file_obj:file_obj.write('aaa\n')file_obj.write('bbb\n')file_obj.write('ccc\n')r = file_obj.write(str(123)+'123123\n')r = file_obj.write('今天天气真不错')print(r)

文件定位

seek()

seek() 函数用于修改文件读取位置,需要两个参数:

  • 要切换到的位置
  • 计算该位置的方式

该函数有三种计算位置方式:

  • 0 从头计算,默认值
  • 1 从当前位置计算
  • 2 从最后位置开始计算
with open('demo2.txt','rt' , encoding='utf-8') as file_obj:file_obj.seek(9)print(file_obj.read())print('当前读取到了 -->',file_obj.tell())

tell()

使用 tell() 函数查看当前读取的位置。

with open('demo2.txt','rt' , encoding='utf-8') as file_obj:file_obj.seek(9)print(file_obj.read())print('当前读取到了 -->',file_obj.tell())

关闭文件

关闭文件是非常重要的操作,它可以释放操作系统资源并确保文件在使用完毕后被正确关闭。

在 Python 中有几种关闭文件的方法:

  1. 使用 close() 方法:可以直接调用文件对象的 close() 方法来关闭文件。
f = open('filename.txt')
# 使用文件对象进行读写操作
f.close()  # 关闭文件
  1. 使用 with 语句:with 语句会在代码块执行完毕后自动关闭文件,即使发生异常也会正常关闭文件。
with open('filename.txt') as f:# 使用文件对象进行读写操作# 不需要手动调用 close() 方法来关闭文件

无论使用哪种方式,关闭文件都是一个良好的编程习惯。这样可以避免文件句柄泄漏和资源浪费。

另外,还有一些需要注意的事项:

  • 在使用 with 语句时,不需要手动调用 close() 方法关闭文件。
  • 在使用 close() 方法关闭文件时,要确保在文件操作完成后再关闭文件,避免在文件操作期间关闭文件导致错误。
  • 如果在文件操作期间发生了异常,并且没有正确处理或关闭文件,那么可能会出现文件未关闭的情况。因此,使用 with 语句能更好地处理这种情况。
  • 出于性能考虑,Python 解释器在某些情况下可能会延迟关闭文件。但是,为了保持良好的编程习惯,我们应该始终在使用完文件后主动关闭它们。

总之,关闭文件是一种好的编程习惯,可以确保文件和系统资源的正确释放。建议在代码中始终养成关闭文件的习惯,特别是当文件操作较为复杂或需要长时间打开文件时。

文件管理

使用 os 模块可以进行文件和目录的管理操作。

获取目录结构

使用 os.listdir() 函数获取指定目录下的目录结构。

import osr = os.listdir()
print(r)

获取当前目录

使用 os.getcwd() 函数获取当前所在的目录。

import osr = os.getcwd()
print(r)

切换当前所在目录

使用 os.chdir() 函数切换当前所在目录,相当于 cd 命令。

import osos.chdir('c:/')
r = os.getcwd()
print(r)

创建目录

使用 os.mkdir() 函数在指定路径下创建新的目录。

import osos.mkdir("aaa")

删除目录

使用 os.rmdir() 函数删除指定路径下的空目录。

import osos.rmdir('abc')

删除文件

使用 os.remove() 函数删除指定路径下的文件。

os.remove('aa.txt')

重命名文件

使用 os.rename() 函数重命名指定路径下的文件或移动文件。

os.rename('aa.txt','bb.txt')
os.rename('bb.txt','c:/users/lilichao/desktop/bb.txt')

总结

本文介绍了Python中文件的操作和管理。首先,我们学习了如何打开文件,包括使用open()函数和with ... as语句打开文件,在操作完成后正确关闭文件是一个良好的编程习惯。然后,我们讨论了如何读取文件的内容,包括读取整个文件和逐行读取文件。对于大型文件,我们介绍了一种逐块读取文件的方式以避免内存问题。接下来,我们学习了如何进行文件的写操作,包括写入新文件和追加内容到已有文件。我们还研究了文件定位的两个重要方法:seek()tell(),它们可以用来控制和获取文件当前的位置。在文件管理方面,我们了解了如何获取目录结构、获取当前目录、切换当前目录、创建目录、删除目录以及删除和重命名文件。这些文件操作和管理的知识对于日常的文件处理任务非常重要,也是程序员必备的技能。

通过学习本文,读者可以掌握文件操作和管理的基本技巧,能够安全地读取和写入文件,并且能够进行简单的文件和目录管理操作。这将为日常的文件处理需求提供帮助,并提升代码的可读性和可维护性。同时,了解文件操作和管理的基本原理,可以为进一步学习更高级的文件操作和管理技术打下坚实的基础。让我们在Python编程中更加熟练地处理文件!

本文到此结束,谢谢观看!


python精品专栏推荐

python基础知识(0基础入门)

【python基础知识】0.print()函数
【python基础知识】1.数据类型、数据应用、数据转换
【python基础知识】2.if条件判断与条件嵌套
【python基础知识】3.input()函数
【python基础知识】4.列表和字典
【python基础知识】5.for循环和while循环
【python基础知识】6.布尔值和四种语句(break、continue、pass、else)
【python基础知识】7.实操-用Python实现“文字PK”小游戏(一)
【python基础知识】7.实操-用Python实现“文字PK”小游戏(二)
【python基础知识】8.编程思维:如何解决问题-思维篇
【python基础知识】9.函数的定义和调用
【python基础知识】10.用函数编写程序 - 实操篇
【python基础知识】10.用Python实现石头剪刀布小游戏-函数实操篇
【python基础知识】11.如何debug -常见报错原因及排查思路 - 思维篇
【python基础知识】12.类与对象(一)
【python基础知识】12.类与对象(二)
【python基础知识】13.类与对象(三)
【python基础知识】13.类与对象(四)
【python基础知识】14.图书管理系统的搭建(类与对象实操)
【python基础知识】15.编码基础知识
【python基础知识】16.文件读写基础及操作
【python基础知识】16.“古诗默写题”的python实现(文件读写和编码-实操篇)
【python基础知识】17.模块的概念以及如何引入
【python基础知识】18.实操-使用python自动群发邮件
【python基础知识】19.产品思维以及流程图的使用 - 思维篇
【python基础知识】20.“午饭吃什么”的python实现(产品思维-实操篇)
【python基础知识】21.高效偷懒的正确打开方式-毕业篇
【python文件处理】CSV文件的读取、处理、写入
【python文件处理】Excel自动处理(使用 openpyxl)
【python文件处理】-excel格式处理


python爬虫知识

【python爬虫】1.爬虫基础知识
【python爬虫】2.网页基础知识
【python爬虫】3.爬虫初体验(BeautifulSoup解析)
【python爬虫】4.爬虫实操(菜品爬取)
【python爬虫】5.爬虫实操(歌词爬取)
【python爬虫】6.爬虫实操(带参数请求数据)
【python爬虫】7.爬到的数据存到哪里?
【python爬虫】8.温故而知新
【python爬虫】9.带着小饼干登录(cookies)
【python爬虫】10.指挥浏览器自动工作(selenium)
【python爬虫】11.让爬虫按时向你汇报
【python爬虫】12.建立你的爬虫大军
【python爬虫】13.吃什么不会胖(爬虫实操练习)
【python爬虫】14.Scrapy框架讲解
【python爬虫】15.Scrapy框架实战(热门职位爬取)
【python爬虫】16.爬虫知识点总结复习

相关文章:

Python文件操作和管理指南:打开、读取、写入和管理文件

文章目录 文件(File)打开文件使用 with ... as 语句打开文件读取文件内容读取大文件的方式逐行读取和读取全部行写文件操作文件定位seek()tell() 关闭文件 文件管理获取目录结构获取当前目录切换当前所在目录创建目录删除目录删除文件重命名文件 总结pyt…...

WebGL 用鼠标控制物体旋转

目录 鼠标控制物体旋转 如何实现物体旋转 示例程序(RotateObject.js) 代码详解 示例效果 鼠标控制物体旋转 有时候,WebGL程序需要让用户通过鼠标操作三维物体。这一节来分析示例程序RotateObject,该程序允许用户通过拖动&…...

Spring Boot魔法:简化Java应用的开发与部署

文章目录 什么是Spring Boot?1. 自动配置(Auto-Configuration)2. 独立运行(Standalone)3. 生产就绪(Production Ready)4. 大量的起步依赖(Starter Dependencies) Spring …...

参议院算法Java

Dota2 的世界里有两个阵营: Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定,他们以一个基于轮为过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利中的一项: 禁止一名参议员的权利:参…...

前端提交规范 ESLint + Prettier + husky + lint-staged

如何统一代码风格,规范提交呢? 推荐使用前端规范全家桶 ESLint Prettier husky lint-staged。 eslint (github.com/eslint/esli…)JavaScript 代码检测工具,检测并提示错误或警告信息prettier (github.com/prettier/pr…) 代码自动化格式…...

python实现命令tree的效果

把所有的文档都传到了git上,但是内容过多找起来不方便,突发奇想如果能在readme中,递归列出所有文件同时添加上对应的地址,这样只需要搜索到对应的文件点击就能跳转过去了… 列出文件总得有个显示格式,所以就按照tree的来了… 用python实现命令tree的效果 首先,这是tree的效果…...

Deformable DETR(2020 ICLR)

Deformable DETR(2020 ICLR) detr训练epochs缩小十倍,小目标性能更好 Deformable attention 结合变形卷积的稀疏空间采样和Transformer的关系建模能力 使用多层级特征层特征,不需要使用FPN的设计(直接使用backbone多层级输出&a…...

springboot01

目录 新建Maven工程&#xff0c;什么都不选 ​pom.xml加上 新建包top.cjz.controller 新建类HelloController ​新建类HelloApplication ​运行浏览器访问 新建Maven工程&#xff0c;什么都不选 pom.xml加上 <!--springboot工程需要继承的父工程--> <parent…...

虚拟机中window/ubuntu系统如何联网?

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考博客 &#xff08;1&#xff09;VMware虚拟机中Windows11无法连接网络 &#xff08;2&#xff09;图解vmware虚拟机win8无线上网 &#xff08;3&#xff09;VMware中VMnet0、VMnet1、VMnet8是什么 &…...

计算物理专题----随机游走实战

计算物理专题----随机游走实战 Problem 1 Implement the 3D random walk 拟合线 自旋的 拟合函数&#xff08;没有数学意义&#xff09; 参数&#xff1a;0.627,3.336,0.603&#xff0c;-3.234 自由程满足在一定范围内的均匀分布以标准自由程为单位长度&#xff0c;…...

《思维与智慧》简介及投稿邮箱

《思维与智慧》自1982年创刊&#xff0c;经国家新闻出版署批准&#xff0c;由河北省教育厅主管&#xff0c;河北行知文化传媒有限责任公司主办的益智励 志类大众文化期刊。 《思维与智慧》办刊宗旨是&#xff1a;“开发思维&#xff0c;启迪智慧&#xff0c;滋润心灵”&#x…...

flask+python快速搭建

app.py """APP 入口模块""" from traceback import format_excfrom api_limiter import limiter from flask import Flask, jsonify import loggingfrom controller import api_sql_blueapp Flask(__name__) limiter.init_app(app) app.regist…...

基于微信小程序的美术馆预约平台设计与实现(源码+lw+部署文档+讲解等)

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…...

ruoyi-vue-pro yudao 项目商城 mall 模块启用及相关SQL脚本

目前ruoyi-vue-pro 项目虽然开源&#xff0c;但是商城 mall 模块被屏蔽了&#xff0c;查看文档却要收费 199元&#xff08;知识星球&#xff09;&#xff0c;价格有点太高了吧。 分享下如何启用 mall 模块&#xff0c;顺便贴上sql相关脚本。 一、启用模块 修改根目录 pom.xm…...

default 和 delete 与默认构造函数 的使用

前言 使用default和delete关键字来干预编译器自动生成的函数。让我详细解释一下这些知识点&#xff1a; 正文 编译器生成的默认构造函数&#xff1a; 如果类A没有定义任何构造函数&#xff0c;那么编译器会自动生成一个无参的默认构造函数 A()。这个默认构造函数实际上是一个…...

【开发篇】一、热部署

文章目录 1、手工启动热部署2、自动启动热部署3、热部署范围配置4、关闭热部署功能 1、手工启动热部署 日常开发与调试&#xff0c;改几行代码想看效果就得手动点重启&#xff0c;很繁琐&#xff0c;接下来考虑启动热部署。首先引入springboot开发者工具&#xff1a; <dep…...

点云从入门到精通技术详解100篇-定子装配过程中基于深度学习的易变形材料的点云分割(下)

目录 4.3.2 校正网络 4.3.3 浅层特征提取网络 4.3.4 空间边界 Transformer 深层特征提取网络 4.3.5 损失函数...

谷歌浏览器关闭自动更新功能

背景&#xff1a;自动化测试需要下载webdriver驱动&#xff0c;然而浏览器自动更新会导致原来的驱动版本与现有浏览器版本不匹配&#xff0c;所以要禁用掉浏览器自动更新功能。 1.右键-我的电脑-打开管理&#xff1b; 2.选择任务计划程序-任务计划程序库-找到两个chrome自动更新…...

电商业务--技术负责人 250K*15

职位描述 研发团队管理 系统搭建 技术管理 系统架构 岗位职责 负责/参与到中大型负责系统的整体架构和设计&#xff1b; 根据业务特点和行业最佳实践&#xff0c;设计符合多个市场物流业务需求&#xff0c;且具备可扩展能力的系统架构和业务架构承担团队稳定性建设工作&#…...

MySQL只同步单个表或多个表,非全部同步!

replicate-do-table 是 MySQL 复制配置中的一个选项&#xff0c;它允许您指定要在从服务器上复制的表。如果您想要只复制主服务器上特定的表到从服务器&#xff0c;您可以使用这个选项。 以下是如何操作 replicate-do-table 的步骤&#xff1a; 停止从服务器: 在从服务器上执行…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...