with open一用就忘?Python读写文本,3行代码让你少掉一半头发 利用 读写文本内容1. 读取文本 1.1 读取文本内容使用, 去读取一份文本之中的内容, 其整个过程被区分为两步: 第一步, 将一个文本予以打开 第二步, 把文本里的内容读取出来。所以, 我们得依托, 所具备的内置函数, 运用open()函数去开启于指定路径那儿的文本, 在这之后再借助read()函数, 把文本的内容读取出来。示例的代码部分如下所示:# open(文件路径, 操作模式, encoding编码格式) # file open(C:\\Users\\Desktop\\myText.txt, r, encodingutf-8) file open(rC:\Users\Desktop\myText.txt, r, encodingutf-8) data file.read() print(data) file.close()代码解析于上述代码段里, 第一行注释呈现出open()函数的运用方法, 首个参数用以指定路径, 第二个参数用于指定操作模式, 其默认形式为“r”, 亦即是读模式, 第三个参数规定读取数据的方式, 默认是以“gbk”方式进行读取。第二行注释跟第一行有效代码的差异在于open()函数的首个参数值存有不同。在第一行有效代码里, open()函数的第一个参数值, 给出了文本文件的路径, 是rC:\Users\\.txt, 这里的“r”起到取消转义作用, 这是由于“\”在其中属于转义字符。倘若不添加上 “r”, 那就得写成第二行注释的模样, 亦即在这种情况下, 会呈现出C:\\Users\\\\.txt 的形式, 这里存在两个 “\”这般的情况。于调用完 open() 函数以打开文件之后, 接着再调用 read() 函数去读取文本内容, 随后赋给变量 data, 为利于进行观察而那般输出。最后, 完成文本的读取之后, 绝对要关闭文件才对, 释放掉所属的资源。经由一个小型案例, 剖析完代码, 想必你必定知晓了借助打开文本的操作方式。最终, 我们再来瞧一瞧, 上述代码段里 open() 函数的第三个参数, 即指明编码格式。此参数颇为关键, 也就是说你所指定的打开文本的编码格式务必与文本自身的编码格式相契合, 否则会出现报错情况的。比如, 我所读取的文本文件, 其编码格式呈现为 utf-8 , 随之我对open()函数里的第三个参数做出改动, 将指定的 utf-8 编码予以取消, 即采用默认的编码格式 gbk 进行编码。之后再次运行下面这段代码:# open(文件路径, 操作模式, encoding编码格式) # file open(C:\\Users\\Desktop\\myText.txt, r, encodingutf-8) file open(rC:\Users\Desktop\myText.txt, r) data file.read() print(data) file.close()下面便是编译器给出的报错信息Traceback (most recent call last): File D:/projects in pycharm/自动化办公/读取文本.py, line 2, in data file.read() UnicodeDecodeError: gbk codec cant decode byte 0x80 in position 22: illegal multibyte sequence对于我们而言, 仅仅去看那最后一行就行, 其表达的意思是这样的, gbk编解码器, 没办法对位置22处的字节0x80进行解码, 原因是该形式属于非法的多字节序列。因此我们给出的解决方案有两种第一种, 指定编码格式, 从而让 “编码格式” 跟文件编码格式一模一样的啦。第二种更改文件的编码格式为 gbk 编码。我们更加推荐第一种解决办法, 原因在于, 要是胡乱去更改 文件自身的编码形式, 那么就有可能致使文件遭到损坏, 进而导致文件内容遗失。1.2 操作模式在前面那一小节里头, 仅仅是很简略地讲了讲open()函数的运用方法, 涵盖了参数方面的内容。实际上, open()函数能够依据不一样的参数, 开展不一样的操作。比如说, 上一章节代码里面那个open()函数的第二个参数来着, 也就是“操作模式”。操作模式可不是只局限于“r”, 还有好多别的操作模式, 大致就像a、w、r这类的。下面呈现下常用的文件操作模式, 就如同下面这个表格展示这样。操作模式描述以只读方式打开文件文件指针放在开头r文件可以读取也可以写入文件指针放在开头rb以二进制方式打开文件对文件进行读取文件指针放在开头去把文件打开, 要往里面写入数据, 要是文件是存在着的, 那就得把原本有的数据给覆盖掉然后再重新写入, 要是文件不存在的话, 那就将会新建出一个文件来。w将文件打开, 能够读取数据并且也能够写入数据, 假如文件实际是存在的, 那么就会把原有的数据进行覆盖, 之后重新去写入, 假若文件是不存在的, 那么将会创建一个新的, 之后再去进行写入。wb把文件以二进制的形式来打开, 针对该文件开展写入方面的操作, 如果这个文件如今是存在着的, 是要将其覆盖掉进而重新去写入的, 要是这个文件并不存在, 那将会新创建出一个然后再去进行写入。实施一项操作, 此操作是针对一个文件展开, 要对该文件里的数据予以追加, 当这个文件已然存在时, 那么数据会追加于原来指的那个位置之后, 要是此文件并不存在那么就会创建一个新的文件, 然后将数据写入其中。ab对一个文件, 采用二进制格式来进行打开, 针对其中的数据开展追加操作, 要是该文件已然存在, 那么便依据原来的指针位置, 将数据追加于其之后, 倘若文件并不存在, 那个时候就会创建出一个新的文件, 而后再用于写入。1.3 多方式读取 1.3.1 () 方法读取于第一节里, 用 read() 函数把文本读取了, 仅能读取文本的全部数据。然而, 当文件规模过大时, 要是直接运用 read() 方法常常是不妥当的, 所以得用到 () 方法, 即读取一行的数据, 读完之后指针自下一行起始。下面给出 () 方法的示例:file open(rC:\Users\Desktop\myText.txt, r, encodingutf-8) data file.readline() print(data) file.close()代码解析运用 () 这种方式, 在运行完毕之后。我们能够发觉, 仅仅读取了一行数据, 第二行未被读取。然而, 此刻指针已然移动到了下一行处, 这里所讲的指针其含义也能够视作鼠标的光标, 就如同下面的图示那样:1.3.2 () 方法读取学完了, 运用特定的那种, 通过某种途径去读取文本的方法之后, 再去认真察看, 以另外一种不一样的方式, 来读取文本内容。那种, 特定的读取文本的方法能够把读取所获得的内容, 以一种呈现为列表的形式进行返回, 换句话讲就是会把进行读取操作的所有行, 都放置在同一个列表里面, 在后续进行处理数据的时候, 能够一次性对这个列表开展遍历就可以了。示例如下所示:file open(rC:\Users\Desktop\myText.txt, r, encodingutf-8) data file.readlines() print(data) file.close()2. 写入文本内容 2.1 write() 方法覆盖写在学习了能够读取文本内容的方法以后, 自然而然并且合理地也存在着可以写入文本内容的方法, 写入的操作跟读取的操作方式是相似的, 仅仅只需要去对参数进行修改就可以了, 接下来给出作为例子的代码:file open(rC:\Users\Desktop\test.txt, w, encodingutf-8) data file.write(hello world) file.close()代码解析第一行吗代码里头, open()函数的第二个参数那儿, 操作模式给改成了 “w”, 实际上就是以写的方式去打开文本, 这因为咱是要写入文本内容。需要留意的是, 采用w模式, 在写入数据得文件不存在的情况下, 就会创建出一个新的文件, 接着再去写入数据。而当文件存在时, 会把原数据给清除掉, 将原来的数据覆盖掉, 仅仅会保存新写入的数据。第二行写的代码当中, 调用了write()这个方法wirte()方法里的参数, 是存放着即将要写入的文本内容的, 这里所指的文本内容是“hello”。最后, 要记得把文件给关闭掉。实际上, 不管是进行读取操作还是写入操作, 在使用完文件之后, 都必须要记得去关闭文件, 这是因为打开文件会占用一定量的计算机资源, 只有关闭之后才能够将计算机资源释放出来。2.2 ()方法是用于追加写的标点符号。哎, 那么 在实际的应用场景当中 我们必然会碰到 需要追加写的情形 因为覆盖写呐 实在是极其不方便哟甭担心 同样是给出了 追加写的办法来契合我们的需求 并且办法相当简单 仅仅只需改动一个参数便可。示例代码如下:file open(rC:\Users\Desktop\test.txt, a, encodingutf-8) data file.write(python yyds) file.close()代码解析能够发现, 相较于上一个部分, 此处仅仅是更改了第一行代码之中, open()函数的操作模式, 该操作模式是 “a”, “a”模式即为追加模式, 在写入的文件存在的情况下, 会把新写入的内容直接添加在文件原本内容的后面, 不会对原有的数据进行覆盖。3. with 的使用于读取或写入文件之际, 有可能会出现异常状况。可是在异常出现之时, 文件赫然仍被占用着, 无法开展下一步操作。因而这决然非我们所期望之结果, 故而我们需对异常情形予以处理, 比如在遭遇异常之后, 能够把文件关闭, 释放资源。通常这个时候我们会使用 try… 的方法处理异常例如try: file open(rC:\Users\Desktop\test.txt, r, encodingutf-8) data file.read() print(data) finally: file.close()当这种方法能够在应对文件异常状况之际, 把文件予以关闭, 进而释放资源。然而我们觉得如此这般的方法颇为繁杂, 原因在于, 有为处专门理文件异常而提供的处置方法, 借助 with 进行应用, 它所具备之行与 try… 的功效是相等同的, 不过却是更为简便。接下来给出相关示例:with open(rC:\Users\Desktop\test.txt, r, encodingutf-8) as file: data file.read() print(data) file.close()代码解析with 作为保留字, 被专门用于与文件操作进行搭配, 这里的 as 是赋值的对象, 会被赋值给 file, 接着运用 read() 方法对文本予以读取, 无论是否出现异常, 最终都会将文件关闭, 相较于 try… 而言是不是更为简洁呀。4. 总结经由上面所进行的学习,想必大家肯定对读取文本内容这样的操作有了一定程度的掌握。事实上这并不复杂哦,无非就是将open()函数的操作模式予以改变,接着调用相应的read()或者write()方法,依据自身的需求还能够运用所提供的其他一些方法。比如说,()、()、()等等,此处就不逐一罗列了。最终, 绝对要记着去关闭文件操作, 也就是运用 close() 此种方法来释放资源。