编程新手必看,Python3中File(文件) 方法知识点及语法学习总结(24)

**介绍:
Python3 中的file对象提供了多种方法来操作文件,以下是一些常用的文件方法:

  1. close():关闭一个已打开的文件。这是释放文件资源的重要步骤,通常在文件操作完成后调用。
  2. flush():刷新文件的缓冲区,即将缓冲区中的数据立即写入文件。这在需要确保数据被写入文件时使用,例如在写入日志文件后立即调用flush()可以确保日志被及时记录。
  3. fileno():返回一个整型的文件描述符(file descriptor),这个描述符可以用来识别打开的文件。
  4. isatty():检测文件是否连接到一个终端设备。如果是,返回True;否则返回False。这可以用来判断当前文件对象是否关联到一个交互式终端。
  5. read(size):从文件中读取指定字节数的数据。如果不指定size或指定为负数,则读取整个文件内容。
  6. readline():从文件中读取一行数据。如果文件较大,逐行读取可以提高内存效率。
  7. write(str):将字符串写入文件。这是文件写入的基本操作,用于将数据保存到文件中。
  8. seek(offset, whence):改变文件指针的位置。offset是移动的字节数,whence是参考位置(0表示文件开头,1表示当前位置,2表示文件末尾)。
  9. tell():返回当前文件指针的位置,即从文件开头到当前位置的字节偏移量。
  10. truncate(size):截断文件,即删除从当前文件指针位置到文件末尾的数据。如果指定了size,则会将文件大小调整为size指定的值。
  11. writelines(lines):写入一个字符串列表到文件中,每个字符串代表一行。
  12. readlines():读取所有行并返回一个包含每行的字符串列表。
  13. readlines(hint):与readlines()类似,但接受一个可选参数hint,用来优化读取多行的性能。
  14. seekable():检查文件是否支持seek()操作,即是否可以移动文件指针。
  15. writable():检查文件是否可写。
  16. readable():检查文件是否可读。
  17. iter():使文件对象成为可迭代的,可以用于循环中逐行读取。
    这些方法使得Python的文件操作变得非常灵活和强大。在使用文件时,需要注意文件的打开和关闭,以及异常处理,确保文件在操作完成后能够正确关闭,避免数据丢失或损坏。**

1、Python3 File(文件) 方法

1.1 、open() 方法

Python open() 方法用于打开一个文件,并返回文件对象。
在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。

open(file, mode='r')

完整的语法格式为:

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

参数说明:
file: 必需,文件路径(相对或者绝对路径)。
mode: 可选,文件打开模式
buffering: 设置缓冲
encoding: 一般使用utf8
errors: 报错级别
newline: 区分换行符
closefd: 传入的file参数类型
opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。
mode 参数有:
在这里插入图片描述
在这里插入图片描述
默认为文本模式,如果要以二进制模式打开,加上 b 。

2、file 对象

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

2.1、 Python3 File close() 方法

概述
close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。 close() 方法允许调用多次。
当 file 对象,被引用到操作另外一个文件时,Python 会自动关闭之前的 file 对象。 使用 close() 方法关闭文件是一个好的习惯。
语法
close() 方法语法如下:

fileObject.close();

参数

返回值
该方法没有返回值。
实例
以下实例演示了 close() 方法的使用:

# 打开文件
f = open("hello.txt", "wb")
print("文件名为: ", f.name)
# 关闭文件
f.close()

运行结果

文件名为:  hello.txt

2.2、Python3 File read() 方法

概述
read() 方法用于从文件读取指定的字符数(文本模式 t)或字节数(二进制模式 b),如果未给定参数 size 或 size 为负数则读取文件所有内容。

语法
read() 方法语法如下:

fileObject.read([size]); 

参数
size – 从文件中读取的字符数(文本模式)或字节数(二进制模式),默认为 -1,表示读取整个文件。
返回值
返回从字符串中读取的字节。
实例
以下实例演示了 read() 方法的使用:
文件 Hello.txt 的内容如下:

这是第一行
这是第二行
这是第三行
这是第四行
这是第五行

循环读取文件的内容:

# 打开文件
fo = open("runoob.txt", "r+")
print ("文件名为: ", fo.name)
line = fo.read(10)
print ("读取的字符串: %s" % (line))
# 关闭文件
fo.close()

运行结果

文件名为:  runoob.txt
读取的字符串: 这是第一行
这是第二

2.3、Python3 File readline() 方法

概述
readline() 方法用于从文件读取整行,包括 “\n” 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 “\n” 字符。
语法
readline() 方法语法如下:

fileObject.readline(); 

参数
size – 从文件中读取的字节数。
返回值
返回从字符串中读取的字节。
实例
以下实例演示了 readline() 方法的使用:
文件 Hello.txt 的内容如下:

1:Hello world!
2:Hello python!
3:Hello java!
4:Hello c++!
5:Hello php!

读取文件的内容:

# 打开文件
f2 = open("D:\\Python3.12\\pythondeme\\Hello\\hello.txt", "r+")
print ("文件名为: ", f2.name)
line = f2.readline()
print ("读取第一行 %s" % (line))
line = f2.readline(5)
print ("读取的字符串为: %s" % (line))
# 关闭文件
f2.close()

运行结果

文件名为:  D:\Python3.12\pythondeme\Hello\hello.txt
读取第一行 1:Hello world!
读取的字符串为: 2:Hel

2.4、Python3 File tell() 方法

概述
tell() 方法返回文件的当前位置,即文件指针当前位置。
语法
tell() 方法语法如下:

fileObject.tell()

参数

返回值
返回文件的当前位置。
实例
以下实例演示了 tell() 方法的使用:
文件 hello.txt 的内容如下:

1:Hello world!
2:Hello python!
3:Hello java!
4:Hello c++!
5:Hello php!

循环读取文件的内容:

# 打开文件
f3 = open("D:\\Python3.12\\pythondeme\\Hello\\hello.txt", "r+")
print("文件名为: ", f3.name)
line = f3.readline()
print("读取的数据为: %s" % (line))
# 获取当前文件位置
pos = f3.tell()
print("当前位置: %d" % (pos))
# 关闭文件
f3.close()

运行结果

文件名为:  D:\Python3.12\pythondeme\Hello\hello.txt
读取的数据为: 1:Hello world!
当前位置: 16

2.5、Python3 File write() 方法

概述
write() 方法用于向文件中写入指定字符串。
在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。
如果文件打开模式带 b,那写入文件内容时,str (参数)要用 encode 方法转为 bytes 形式,否则报错:TypeError: a bytes-like object is required, not ‘str’。
语法
write() 方法语法如下:

fileObject.write( [ str ])

参数
str – 要写入文件的字符串。
返回值
返回的是写入的字符长度。
实例
文件 hello.txt 的内容如下:

Hello world!
Hello Python!
good Python!
Hello world!
Hello Python!
good Python!

以下实例演示了 write() 方法的使用:

# 打开文件
fo = open("runoob.txt", "r+")
print ("文件名: ", fo.name)
str = "6:www.runoob.com"
# 在文件末尾写入一行
fo.seek(0, 2)
line = fo.write( str )
# 读取文件所有内容
fo.seek(0,0)
for index in range(6):
    line = next(fo)
    print ("文件行号 %d - %s" % (index, line))
# 关闭文件
fo.close()

运行结果

文件行号 0 - 1:www.runoob.com
文件行号 1 - 2:www.runoob.com
文件行号 2 - 3:www.runoob.com
文件行号 3 - 4:www.runoob.com
文件行号 4 - 5:www.runoob.com
文件行号 5 - 6:www.runoob.com

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vos3000外呼系统客户端无法安装如何解决?

如果 VOS3000 外呼系统客户端无法安装,可以尝试以下解决方法: 检查系统要求: 确保你的计算机满足 VOS3000 外呼系统客户端的系统要求,包括操作系统版本、内存、处理器等。如果系统不符合要求,可能会导致安装失败或者运…

AI生图美学在淘宝的实践应用

本文介绍了如何制定和应用美学标准来评估和改善人工智能生成的图像质量,特别是在电商领域的应用,主要分为制定美学标准、训练美学模型、应用美学模型、升级淘宝风格模型四个步骤。 美学的定义与分析 图像质量标准:现代设计框架下,…

《自动机理论、语言和计算导论》阅读笔记:p261-p314

《自动机理论、语言和计算导论》学习第 10 天,p261-p314总结,总计 48 页。 一、技术总结 1.generating & reachable 2.Chomsky Normal Form(CNF) 乔姆斯基范式。 3.pumping lemma 泵作用引理。引理:引理是数学中为了取得某个更好的…

JAVA基础之垃圾收集器

一 JVM垃圾收集 分代收集思想 当前虚拟机的垃圾收集一般采用分代收集算法,这种算法本身没有创新性,只是根据对象存活周期的不同将内存分为几块。一般将java堆内存分为新生代和老年代,这样我们就可以根据不同年龄到的特点选择不同的垃圾收集…

试用花生壳软件,实现外网访问内网web服务器

试用花生壳软件,实现外网访问内网web服务器。今天查看了一下家用的WiFi路由器和光猫。在wifi路由器里看到了DDNS,看到了花生壳。这时想到了花生壳软件能实现外网访问内网web服务器的功能。于是试用了一下。 先游览了贝锐花生壳公司网站,了解…

落地灯几瓦合适?落地护眼灯推荐

不少人选择在客厅中摆放落地灯的时候,都不知道客厅落地灯多少瓦合适,接下来小编为大家整理了有关客厅落地灯多少瓦合适的相关内容,顺便分享一下落地灯应该怎么选,以及推荐五款落地护眼灯,供大家在选择的时候参考。 灯光…

如何使用ChatGPT仿写一篇学术论文

点击下方▼▼▼▼链接直达AIPaperPass ! AIPaperPass - AI论文写作指导平台 目录 1.仿写的目的 2.根据专业方向搜集合适的文献 3.总结想要仿写的文献 4.使用ChatGPT一步一步仿写 5.书籍介绍 AIPaperPass智能论文写作平台 深入地阅读和分析你研究领域的相关文…

路由过滤实验

目录 一、实验拓扑 ​编辑 二、实验要求 三、实验思路 四、实验配置 1、配置IP地址 2、配置RIP 3、配置OSPF 4、双向引入 5、使用路由过滤(acl),除 R4 上的业务网段以外,其他业务网段路由都引入到对方协议内部 6、配置地…

【函数式接口使用✈️✈️】配合策略模式实现文件处理的案例

目录 🍸前言 🍻一、功能描述 🍺二、面向对象设计模式 🍹三、策略模式 🍦四、策略 VS 面向对象 🍨章末 🍸前言 小伙伴们大家好,上周初步了解了下函数式接口,Consume…

通过DaoCloud DCE的场景化应用看容器云平台的核心能力(三)

以下场景来自DaoCloud官方文档场景化视频,这里以文字形式简单提取下要点,包括操作步骤和一些问题。 一共13个场景,本篇包含5个:9.快速定位异常与排障、10.基于CICD的应用发布、11.基于GitOps持续部署云原生应用、12.使用中间件与…

数据结构与算法笔记:线性建堆

ACM大牛带你玩转算法与数据结构-课程资料 本笔记属于船说系列课程之一,课程链接: 哔哩哔哩_bilibilihttps://www.bilibili.com/cheese/play/ep66799?csourceprivate_space_class_null&spm_id_from333.999.0.0 你也可以选择购买『船说系列课程-年度会…

110. turtle库创建画笔对象

110. turtle库创建画笔对象 【目录】 文章目录 110. turtle库创建画笔对象1. 知识回顾-类与对象1.1 类1.2 对象 2. 创建画笔对象2.1 方法12.1 方法2 3. 绘制一个正方形4. 总结 【正文】 1. 知识回顾-类与对象 类是创建对象的蓝图。 对象是类的实例。 1.1 类 类(…

001-谷粒商城-微服务剖析

1、架构图 还是很强的,该有的都有 2、微服务模块 SpringCloudAlibaba组件包括 SentinelNacosRocketMQSeata 搭配SpringCloudAlibaba组件 OpenFeignGateWayRibbn gateway使用了SpringWebFlux,前几天研究到,为什么springboot不直接使用Spri…

vue3【详解】选项式 API 实现逻辑复用

抽离逻辑代码到一个函数函数命名约定为 useXxxx格式 ( React Hooks 也是 )在 setup 中引用 useXxx 函数 演示代码:实时获取鼠标的坐标 逻辑封装 useMousePosition.js // 导入 ref, onMounted, onUnmounted import { ref, onMounted, onUnmounted } from "vue…

Android Graphics 显示系统 - 解读Source Crop和Display Frame(三二)

“ 假设你手里有一张足够大的白纸,请你把它对折51次。想象一下,它会有多高?1米?2米?其实,这个厚度超过了地球和太阳之间的距离!人生亦如此,不用心去投资,它不过是51张白纸…

事务并发控制之说透mvcc

前言 不知道有没有人有过这样的想法💡,为什么在MySQL中已经有了各种各样的锁了,还需要mvcc呢?如果你没有想过这个问题,那只能证明你真的没有想过。 但是我的建议是可以去想一下,如果你从来没有想过这个问…

虚拟机扩容方法

概述 我的虚拟机开始的内存是40G,接下来要扩成60GB 扩容步骤 步骤1 步骤2 步骤3 修改扩容后的磁盘大小,修改后的值只可以比原来的大,修改完成后点击扩展,等待扩展完成 步骤4 虽然外面扩展成功,但是新增的磁盘空间虚拟机内部还…

自动化测试的7个步骤

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

阿里巴巴Java开发规范——编程规约(3)

# 阿里巴巴Java开发规范——编程规约(3) 编程规约 (四) OOP规约 1.【强制】构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中 这条编程规范的目的是为了保持代码的清晰性、可读性…