在编程时,打开文件写入和从硬盘中读取数据非常重要滴,open函数,正是有这个功能。在这之前,要明确这样几个点:

1.可以长期使用的数据是存储在硬盘的,而要想使用或修改的话要先将其读入内存就行操作。

2.open打开时是会占用内存的,就像你打开软件一样,软件开多了会开,文件也是。所以一般要有close方法关闭。

3.py是一门面向对象的语言,所以研究到最后,也就是oop解释。(其实都是oop捏(魔化🤗🤗🤗

4.js神教万岁(×

open在python中的用法 python中open函数的作用_数据

 


 😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉

一,open函数

说open是一个函数,那么它就会有传入的参数,他们分别是:

file:文件的path(路径)

mode:文件的读取方法默认r(只读),当要读取图片,视频等数据使用带b(二进制)的方式读取,当然也可以组合使用——

open在python中的用法 python中open函数的作用_数据_02

 

encode/decode:编码或解码,数据是以二进制的格式写入硬盘的,当数据是文本文件的时候,读取的时候会因为encode(编码)的不同而显示不同的内容(锟斤拷捏🥺🥺🥺),所以要encode它,现在一般是utf-8的编码了

errors:打开文件时的错误处理,默认None,传入类型为str(二进制读取下不可指定。

buffering:缓冲设置,值可以是任意一个正整数、负整数或0,默认为-1。为负整数时,缓冲区的大小设置使用系统默认缓冲机制,具体会遵从以下两点策略。一,当mode参数为二进制模式时,采用固定块内存缓冲区方式,内存块的大小根据系统设备分配的磁盘块来决定,如果获取系统磁盘块的大小失败,就使用内部常量io.DEFAULT_BUFFER_SIZE定义的大小。一般的操作系统上,块的大小是4096或者8192字节。二,对于交互的文本文件(isatty()判断为True),采用行缓冲区的方式。其它文本文件使用跟二进制一样的方式。注意,buffering设置为任意负整数,效果都是相同的。buffering若为0,则不使用缓冲区,即缓冲区大小为0,写入和读取都是直接与磁盘对接。buffering若为1,则表示缓冲区采用行缓冲区,即只能放一行数据,遇到换行符即清空缓存,将数据写入磁盘。buffering为大于1的正整数时,这个正整数即代表缓冲区的大小,单位为字节。所以,buffering如果等于300,那么当数据达到300时就写入磁盘。

encoding:设置编码格式,当读取文件为文本时设置,可以以对应的编码格式解码文字(只有文字才行,图片,视频等二进制数据是不需要编码滴

 

二,with上下文管理器

open在python中的用法 python中open函数的作用_数据_03

 

  这是我们最常用的open()使用方式,这里使用的with,就是py的一个语法糖(奇技淫巧,俺哎哟(爱用

open在python中的用法 python中open函数的作用_python_04

 他的原理就是通过两个魔法方法,__enter__和__exit__实现的

  1. __enter__方法里,让文件东西也就是open()函数返回的东西与as f:之后对f的操作相绑定,也就是说他们是在一个方法里面做的相关操作。
  2. __exit__方法:顾名思义,就是关闭这个文件,它在所有语句结束后会返回true正常关闭文件。