Python文件操作和管理指南:打开、读取、写入和管理文件
文章目录
- 文件(File)
- 打开文件
- 使用 with ... as 语句打开文件
- 读取文件内容
- 读取大文件的方式
- 逐行读取和读取全部行
- 写文件操作
- 文件定位
- seek()
- tell()
- 关闭文件
- 文件管理
- 获取目录结构
- 获取当前目录
- 切换当前所在目录
- 创建目录
- 删除目录
- 删除文件
- 重命名文件
- 总结
- python精品专栏推荐
- python基础知识(0基础入门)
- python爬虫知识
文件(File)
通过Python程序来对计算机中的各种文件进行增删改查的操作
I/O(Input / Output)
操作文件的步骤:
- 打开文件
- 对文件进行各种操作(读、写),然后保存
- 关闭文件
打开文件
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 中有几种关闭文件的方法:
- 使用
close()方法:可以直接调用文件对象的close()方法来关闭文件。
f = open('filename.txt')
# 使用文件对象进行读写操作
f.close() # 关闭文件
- 使用
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工程,什么都不选 pom.xml加上 新建包top.cjz.controller 新建类HelloController 新建类HelloApplication 运行浏览器访问 新建Maven工程,什么都不选 pom.xml加上 <!--springboot工程需要继承的父工程--> <parent…...
虚拟机中window/ubuntu系统如何联网?
以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考博客 (1)VMware虚拟机中Windows11无法连接网络 (2)图解vmware虚拟机win8无线上网 (3)VMware中VMnet0、VMnet1、VMnet8是什么 &…...
计算物理专题----随机游走实战
计算物理专题----随机游走实战 Problem 1 Implement the 3D random walk 拟合线 自旋的 拟合函数(没有数学意义) 参数:0.627,3.336,0.603,-3.234 自由程满足在一定范围内的均匀分布以标准自由程为单位长度,…...
《思维与智慧》简介及投稿邮箱
《思维与智慧》自1982年创刊,经国家新闻出版署批准,由河北省教育厅主管,河北行知文化传媒有限责任公司主办的益智励 志类大众文化期刊。 《思维与智慧》办刊宗旨是:“开发思维,启迪智慧,滋润心灵”&#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+部署文档+讲解等)
前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…...
ruoyi-vue-pro yudao 项目商城 mall 模块启用及相关SQL脚本
目前ruoyi-vue-pro 项目虽然开源,但是商城 mall 模块被屏蔽了,查看文档却要收费 199元(知识星球),价格有点太高了吧。 分享下如何启用 mall 模块,顺便贴上sql相关脚本。 一、启用模块 修改根目录 pom.xm…...
default 和 delete 与默认构造函数 的使用
前言 使用default和delete关键字来干预编译器自动生成的函数。让我详细解释一下这些知识点: 正文 编译器生成的默认构造函数: 如果类A没有定义任何构造函数,那么编译器会自动生成一个无参的默认构造函数 A()。这个默认构造函数实际上是一个…...
【开发篇】一、热部署
文章目录 1、手工启动热部署2、自动启动热部署3、热部署范围配置4、关闭热部署功能 1、手工启动热部署 日常开发与调试,改几行代码想看效果就得手动点重启,很繁琐,接下来考虑启动热部署。首先引入springboot开发者工具: <dep…...
点云从入门到精通技术详解100篇-定子装配过程中基于深度学习的易变形材料的点云分割(下)
目录 4.3.2 校正网络 4.3.3 浅层特征提取网络 4.3.4 空间边界 Transformer 深层特征提取网络 4.3.5 损失函数...
谷歌浏览器关闭自动更新功能
背景:自动化测试需要下载webdriver驱动,然而浏览器自动更新会导致原来的驱动版本与现有浏览器版本不匹配,所以要禁用掉浏览器自动更新功能。 1.右键-我的电脑-打开管理; 2.选择任务计划程序-任务计划程序库-找到两个chrome自动更新…...
电商业务--技术负责人 250K*15
职位描述 研发团队管理 系统搭建 技术管理 系统架构 岗位职责 负责/参与到中大型负责系统的整体架构和设计; 根据业务特点和行业最佳实践,设计符合多个市场物流业务需求,且具备可扩展能力的系统架构和业务架构承担团队稳定性建设工作&#…...
MySQL只同步单个表或多个表,非全部同步!
replicate-do-table 是 MySQL 复制配置中的一个选项,它允许您指定要在从服务器上复制的表。如果您想要只复制主服务器上特定的表到从服务器,您可以使用这个选项。 以下是如何操作 replicate-do-table 的步骤: 停止从服务器: 在从服务器上执行…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
