文件的三种打开方式知识点回顾

目录

  • 文件的三种打开模式

    • 文件的绝对路径与相对路径
    • with管理文件上下文
    • 一、r模式
    • 二、w模式
    • 三、a模式
    • 四、文件二进制方式读取文件

文件的三种打开模式

文件的基本操作方式有三种:

r模式:read

w模式:write

a模式:append

文件读写内容的格式有两种:

t模式:text

b模式:bytes

文件的打开模式需要和文件读写的格式一起使用,比如通过read模式读取文件需要指定是以text还是以二进制的方式读取文件,如果不指定默认是t模式。

文件的绝对路径与相对路径

文件的绝对路径是从盘符开始的路径,相对路径是从当前执行文件所在的文件夹开始的路径,在open函数中文件的路径可以写相对路径也可以写绝对路径。

with管理文件上下文

打开文件我们使用with open而不使用open,因为open方法只打开文件而不负责关闭文件,而with 提供了一种自动关闭文件的机制,在文件运行结束后可以自动关闭文件。

一、r模式

readable()判断文件是否可读,返回bool值,不过该方法只能判断文件是否可读,如果文件不存在会报错。

read模式是只读模式,如果指定打开的文件不存在会报错。

with open('1.text','r',encoding='utf8') as fr:
    content = fr.read()
    print(content)
    

.read()方法会一次将所有的文件全部读入到内存,如果文件较大会导致内存占用过大的问题,为了避免这种情况的出现我们可以用.readline()逐行读取内容,readline()的特点是每调用一次读取一行,文件是迭代器对象,每调用一次都会接着前面的内容继续迭代。

with open('1.text','r',encoding='utf8') as fr:
    for i in range(10):
        print(fr.readline())

readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。

如果碰到结束符 EOF 则返回空字符串。

with open('1.text','r',encoding='utf8') as fr:

    for line in fr.readlines():
        lin = line.strip()#我们可以通过for循环对文本内容进行处理
        print(lin)

read和readline可以指定读取的内容的长度,如read(3),就是读取三个字符。readlines则会以列表的形式将换行符前面的所有内容读出来(始终括号内数字的长度小于读取内容的长度)。

二、w模式

write模式是只写模式,该模式打开文件时会先将文件里的内容删除,然后再写入,如果文件不存在就将自动创建一个文件然后再将内容写入。

with open('2.text','w',encoding='utf8') as fw:
    fw.write(content1)

三、a模式

append模式是和write模式类似,相同点是都是只写,且如果文件不存在都会先创建文件然后再写入。不同点是append不会删除已存在的文件内容,而是在已存在的内容后面写入内容。

with open('2.text','a',encoding='utf8') as fa:
    fa.write(content1)

四、文件二进制方式读取文件

上面文件的读写都是text模式下的,下面我们了解一下b模式下文件的读取,b模式对文件的格式没有要求,不论是文本文件还是视频音频都可以采用b模式进行读取,由于b模式是采用二进制的方式对数据进行的读写操作所以不能设置编码格式,如果我们用b模式去读取文件,就要用b模式去写入文件这样才能完好的还原我们所读取的数据。

with open('1.text','rb') as fr:
    content1 = fr.read()

with open('2.text','ab') as fa:
    fa.write(content1)

原文地址:https://www.cnblogs.com/ghylpb/p/12115473.html

时间: 2024-08-29 19:54:31

文件的三种打开方式知识点回顾的相关文章

文件的三种打开方式以及with管理上下文

一.文件的三种打开方式 1.1 只读 f = open(r'D:\pycharm\yjy\上海python学习\456.txt','r',encoding='utf8') data = f.read() #读取文件 print(data) f.close() 读的其他语法 逐行读.是否可读 print(1,f.readline()) # 逐行读 print(f.readable()) # 是否可读 # True ps:如果我们需要读文件里面的每一行代码,我们可以用for循环,举个栗子 for i

文件的三种打开模式

文件的三种打开模式 文件操作的基础模式有三种(默认的操作模式为r模式): r模式为read w模式为write a模式为append 文件读写内容的格式有两种(默认的读写内容的模式为b模式): t模式为text b模式为bytes 需要注意的是:t.b这两种模式均不能单独使用,都需要与r/w/a之一连用. 一. 文件打开模式之r模式 r:read,只读模式,只能读不能写,文件不存在时报错. f = open('32.txt', mode='r') # 报错 f.write() f.close()

SpringMVC上传文件的三种解析方式

springMVC上传文件后,在action解析file文件的三种方式. jsp页面的写法: <form action="parserUploadFile1" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit"

JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -dump:format=b,file=文件名 [pid] 例如: jmap -dump:format=b,file=/usr/local/base/02.hprof 12942 方法二: 让JVM在遇到OOM(OutOfMemoryError)时生成Dump文件,需要配置一些信息 -XX:+HeapDu

解析Xml文件的三种方式及其特点

解析Xml文件的三种方式 1.Sax解析(simple api  for xml) 使用流式处理的方式,它并不记录所读内容的相关信息.它是一种以事件为驱动的XML API,解析速度快,占用内存少.使用回调函数来实现. 1 class MyDefaultHander extends DefaultHandler{ 2 private List<Student> list; 3 private Student student; 4 5 @Override 6 public void startDo

Velocity中加载vm文件的三种方式

Velocity中加载vm文件的三种方式: a.  加载classpath目录下的vm文件 Properties p = new Properties(); // 加载classpath目录下的vm文件 // 这里是加载模板VM文件,比如:/META-INF/template/Web_B2CPayment.vm(请参考mas_spring_integration.xml) p.setProperty("file.resource.loader.class", "org.apa

Android学习之XML数据的三种解析方式以及生成XML文件

首先,我得声明,本博客的思想主要参考了此博客:http://blog.csdn.net/liuhe688/article/details/6415593 不过代码我自己一句句敲的 好了,首先讲一下解析XML的三种方式:(恕我粘贴一下哈) SAX解析器: SAX(Simple API for XML)解析器是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的.当事件源产生事件后,调用事件处理器相应的处理方法,一个事件就可以得到处理.在事件源调用事件处理器中特定方

转 Velocity中加载vm文件的三种方式

Velocity中加载vm文件的三种方式 velocitypropertiespath Velocity中加载vm文件的三种方式:   方式一:加载classpath目录下的vm文件 Properties p = new Properties(); p.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); Ve

Django框架进阶6 多对多三种创建方式, Ajax, Content-Type前后端传输数据编码格式, Ajax发送文件数据, django内置的序列化功能, Ajax结合sweetalert实现删除二次确认, 批量插入数据, 自定义分页器, ajax结合sweetalert实现删除二次确认

多对多三种创建方式 1.全自动(较为常用) class Book(models.Model): title = models.CharField(max_length=32) authors = models.ManyToManyField(to='Author') # orm就会自动帮你创建第三张表 class Author(models.Model): name = models.CharField(max_length=32) ''' 好处:第三张表自己创建 不足之处:第三张表无法扩展额外