Python小白学习教程从入门到入坑------第二十八课 文件基础操作文件读写(语法进阶)

目录

文件基础操作

1.1 什么是文件?

1.2 打开文件

1.3 读取文件

1.4 写入文件

1.5 关闭文件

1.6 文件指针和位置

1.7 文件模式



文件基础操作

1.1 什么是文件?

在Python中,"文件"这一术语主要指的是存储在计算机存储设备(例如硬盘、SSD或网络驱动器)上的数据集合。这些数据集合可能是文本文件、二进制文件、图像文件、音频文件、视频文件或任何其他格式的文件。Python提供了一套完整的文件操作API,允许开发者读取、写入、追加、修改以及删除文件内容。

Python中的文件操作通常涉及以下几个步骤:

打开文件使用内置的open函数,可以指定文件名和模式(如读、写、追加等)来打开文件。open函数返回一个文件对象,该对象包含用于文件操作的各种方法

读取文件:如果文件以读模式打开,可以使用文件对象的read、readline或readlines等方法来读取文件内容

写入文件:如果文件以写模式或追加模式打开,可以使用文件对象的write方法将字符串数据写入文件

关闭文件:完成文件操作后,应使用close方法关闭文件,或更推荐使用with语句来确保文件在操作完成后自动关闭

文件指针操作:文件对象还提供了seek和tell方法,允许在文件中移动读取/写入位置,以及获取当前位置

文件模式:open函数允许指定多种模式,包括文本模式和二进制模式,以及只读、只写、读写、追加等

异常处理:在进行文件操作时,可能会遇到各种异常(如文件不存在、权限不足等),因此通常需要使用try...except语句来处理这些潜在错误

在文件的基础操作中也有一些注意事项如下:

1、在读取或写入文件时,应确保文件存在且具有适当的权限

2、使用with语句可以简化文件的管理,并自动处理异常情况下的资源释放

3、在写入文件时,如果文件不存在,写模式('w')会创建新文件,而读模式('r')则会引发FileNotFoundError异常

4、追加模式('a')用于在文件末尾添加内容,而不会覆盖原有内容。如果文件不存在,追加模式也会创建新文件

1.2 打开文件

使用open函数可以打开一个文件,并返回一个文件对象。

open函数的基本语法如下:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

其中,最常用的参数是file(文件名或文件路径)和mode(模式)。模式决定了是以什么方式打开文件,比如读('r')、写('w')、追加('a')等。如果不指定模式,默认是'r'(只读)

eg:

# 打开文件以读取
file = open('example.txt', 'r')# 打开文件以写入(会覆盖文件内容)
file_write = open('example.txt', 'w')# 打开文件以追加(在文件末尾添加内容)
file_append = open('example.txt', 'a')

1.3 读取文件

文件对象提供了多种方法来读取文件内容:

read(size=-1):读取整个文件内容(如果指定了size,则读取size个字符)

readline():读取文件的一行

readlines():读取文件的所有行,并返回一个包含每行内容的列表(包括行尾的换行符,除非文件是以二进制模式打开的)

eg:

# 读取整个文件内容
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, end='')  # 使用end=''防止添加额外的换行符(如果文件中每行末尾有换行符的话)

1.4 写入文件

使用文件对象的write方法可以将字符串写入文件。如果文件以写模式('w')或追加模式('a')打开,则可以写入内容

eg:

# 写入内容到文件(会覆盖原有内容)
with open('example.txt', 'w') as file:file.write('Hello, World!\n')file.write('This is a new line.\n')# 追加内容到文件末尾
with open('example.txt', 'a') as file:file.write('This is an appended line.\n')

1.5 关闭文件

文件操作完成后,应该关闭文件以释放系统资源。这可以通过调用文件对象的close方法来实现。但是,更好的做法是使用with语句,它会在代码块执行完毕后自动关闭文件,即使发生异常也会确保文件被正确关闭。

eg:

# 使用with语句自动关闭文件
with open('example.txt', 'r') as file:# 文件操作content = file.read()
# 文件在这里已经自动关闭,无需调用file.close()

1.6 文件指针和位置

1、seek(offset, whence=0):移动文件指针到指定位置。offset是偏移量,whence是参考点,可以是0(文件开头,默认)、1(当前位置)或2(文件末尾)

2、tell():返回当前文件指针的位置

eg:

# 移动文件指针并读取内容
with open('example.txt', 'r') as file:file.seek(7)  # 移动到文件的第8个字节(索引从0开始)print(file.tell())  # 输出当前位置print(file.read())  # 从当前位置读取剩余内容

1.7 文件模式

除了基本的读写模式('r'、'w'、'a'),Python还支持二进制模式('b')和更新模式('+')

二进制模式:以二进制方式打开文件,例如'rb'(读二进制)、'wb'(写二进制)

更新模式:允许读写文件,例如'r+'(读/写,文件指针在文件开头)、'w+'(写/读,覆盖文件内容,文件指针在文件开头)、'a+'(读/写,追加内容,文件指针在文件末尾)

eg:

# 以二进制模式读取文件
with open('example.bin', 'rb') as file:binary_content = file.read()# 处理二进制内容# 以更新模式打开文件
with open('example.txt', 'r+') as file:# 读取文件内容content = file.read()# 移动文件指针到文件开头并写入内容file.seek(0)file.write('New content at the beginning.\n')# 继续读取或写入内容

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

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

相关文章

【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】

【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】 1、前言2、前置学习(1)window和Linux中python寻找目录的方式。&#x…

RabbitMQ客户端应用开发实战

这一章节我们将快速完成RabbitMQ客户端基础功能的开发实战。 一、回顾RabbitMQ基础概念 这个RabbitMQ的核心组件,是进行应用开发的基础。 二、RabbitMQ基础编程模型 RabbitMQ提供了很多种主流编程语言的客户端支持。这里我们只分析Java语言的客户端。 上一章节提…

一文了解Android SELinux

在Android系统中,SELinux(Security-Enhanced Linux)是一个增强的安全机制,用于对系统进行强制访问控制(Mandatory Access Control,MAC)。它限制了应用程序和进程的访问权限,提供了更…

python画图|hist()函数深层体验

【1】引言 前述学习已经掌握hist()函数的基本运用技巧,可通过下述链接直达: python画图|hist()函数画直方图初探-CSDN博客 python画图|hist()函数画直方图进阶-CSDN博客 我们已经理解hist()函数本质上画的是概率分布图,相关知识属于数理统…

火狐浏览器同源策略禁止解决方案

前言 火狐浏览器同源策略禁止解决方案_同源策略禁止读取远程资源怎么办-CSDN博客 在使用Firefox火狐浏览器进行Web开发时,有时会遇到因为同源策略(Same-Origin Policy)导致的跨域请求被拦截的问题。例如,控制台可能会显示如下错…

计算机网络——TCP篇

TCP篇 基本认知 TCP和UDP的区别? TCP 和 UDP 可以使用同一个端口吗? 可以的 传输层中 TCP 和 UDP在内核中是两个完全独立的软件模块。可以根据协议字段来选择不同的模块来处理。 TCP 连接建立 TCP 三次握手过程是怎样的? 一次握手:客户端发送带有 …

解决ImportError: DLL load failed while importing _message: 找不到指定的程序。

C:\software\Anoconda\envs\yolov5_train\python.exe C:\Project\13_yolov5-master\train.py C:\software\Anoconda\envs\yolov5_train\lib\site-packages\torchvision\io\image.py:13: UserWarning: Failed to load image Python extension: [WinError 127] 找不到指定的程序…

AOSP沙盒android 11

这里介绍一下aosp装系统 什么是aosp AOSP(Android Open Source Project)是Android操作系统的开源版本。 它由Google主导,提供了Android的源代码和相关工具,供开发者使用和修改。 AOSP包含了Android的核心组件和API,使…

git提交冲突的原因及解决方案

一、场景一 1.冲突原因 提交者的版本库 < 远程库 要保障提交者的版本库信息和远程仓库是一致的 2.解决方案 实现本地同步git pull,再提交代码&#xff08;最好每次git push之前都git pull一下&#xff0c;防止这种情况的出现&#xff09; 场景二 1.冲突原因 别人跟你…

第十五届蓝桥杯C/C++B组题解——数字接龙

题目描述 小蓝最近迷上了一款名为《数字接龙》的迷宫游戏&#xff0c;游戏在一个大小为N N 的格子棋盘上展开&#xff0c;其中每一个格子处都有着一个 0 . . . K − 1 之间的整数。游戏规则如下&#xff1a; 从左上角 (0, 0) 处出发&#xff0c;目标是到达右下角 (N − 1, N …

得物多模态大模型在重复商品识别上的应用和架构演进

重复商品治理介绍 根据得物的平台特性&#xff0c;同一个商品在平台上不能出现多个链接&#xff0c;原因是平台需要保证一品一链的特点&#xff0c;以保障商品的集中竞价&#xff0c;所以说一个商品在整个得物平台上只能有一个商详链接&#xff0c;因此我们需要对一品多链的情…

盘点2024年惊艳的10款录屏工具!!

你是否经常需要捕捉电脑屏幕上的精彩瞬间&#xff1f;或者想要记录自己操作某个应用程序的流程&#xff1f;这时候你就需要一款录屏工具啦&#xff01;在学习、工作和娱乐中&#xff0c;录屏工具都能成为你的得力助手。无论你是做教学视频、游戏解说还是分享精彩瞬间&#xff0…

vue+websocket实现即时聊天平台

目录 1 什么是websocket 2 实现步骤 2.1 导入依赖 2.2 编写代码 1 什么是websocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它主要用于在客户端和服务器之间建立持久的连接&#xff0c;允许实时数据交换。WebSocket 的设计目的是为了提高 Web 应用程序的…

软件设计师-上午题-15 计算机网络(5分)

计算机网络题号一般为66-70题&#xff0c;分值一般为5分。 目录 1 网络设备 1.1 真题 2 协议簇 2.1 真题 3 TCP和UDP 3.1 真题 4 SMTP和POP3 4.1 真题 5 ARP 5.1 真题 6 DHCP 6.1 真题 7 URL 7.1 真题 8 浏览器 8.1 真题 9 IP地址和子网掩码 9.1 真题 10 I…

C++:map 和 set 的使用

前言 平衡二叉搜索树 ( AVL树 ) 由于二叉搜索树在特殊情况下&#xff0c;其增删查的效率会降低到 O ( N )&#xff0c;因此对二叉搜索树进行改良&#xff0c;通过旋转等方式将其转换为一个左右均衡的二叉树&#xff0c;这样的树就称为平衡二叉搜索树&#xff0c;又称 AVL树。…

Vue 自定义icon组件封装SVG图标

通过自定义子组件CustomIcon.vue使用SVG图标&#xff0c;相比iconfont下载文件、重新替换更节省时间。 子组件包括&#xff1a; 1. Icons.vue 存放所有SVG图标的path 2. CustomIcon.vue 通过icon的id索引对应的图标 使用的时候需要将 <Icons></Icons> 引到使用的…

面相小白的php反序列化漏洞原理剖析

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理反序列化漏洞的一些成因原理 建议学习反序列化之前 先对php基础语法与面向对象有个大体的了解 (我觉得我整理的比较细致&#xff0c;了解这俩是个啥就行) 漏洞实战情况 这个漏洞黑盒几乎不会被发现&am…

ReactPress:深入解析技术方案设计与源码

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎提出宝贵的建议&#xff0c;欢迎一起共建&#xff0c;感谢Star。 ReactPress是一个基于React框架开发的开源发布平台&#xff0c;它不仅仅是一个简单的博客系统&#xff0c;更是一个功能全…

canal1.1.7使用canal-adapter进行mysql同步数据

重要的事情说前面&#xff0c;canal1.1.8需要jdk11以上&#xff0c;大家自行选择&#xff0c;我这由于项目原因只能使用1.1.7兼容版的 文章参考地址&#xff1a; canal 使用详解_canal使用-CSDN博客 使用canal.deployer-1.1.7和canal.adapter-1.1.7实现mysql数据同步_mysql更…

SpringBoot之定时任务

1. 前言 本篇博客是个人的经验之谈&#xff0c;不是普适的解决方案。阅读本篇博客的朋友&#xff0c;可以参考这里的写法&#xff0c;如有不同的见解和想法&#xff0c;欢迎评论区交流。如果此篇博客对你有帮助&#xff0c;感谢点个赞~ 2. 场景 我们讨论在单体项目&#xff0c…