python 以流的⽅式读取⽂件简要实现⽅式思路
为什么要⽤流来读取⽂件
我们都知道如果在服务器端上传⼀个视频,并且通过静态⽂件的⽅式返回给⽤户读取的话会有以下⼏点的缺点:
1. ⽂件过⼤,整个读取占⽤服务器空间
2. 静态访问可以在html中查看到视频的静态地址,安全性差
那么如果⽤流对⽂件进⾏读取,每次读取仅仅返回给⽤户部分的视频,⽐如⼀次返回5M,动态的进⾏读取,则可以⼤⼤的提⾼服务器的性能,并且保证安全性。
如何通过代码来实现
这⾥以读取⼀个txt⽂件来进⾏演⽰,视频涉及到读取的位置和终点位置 这⾥不做详细解释,会在之后的博客中补上。
⾸先创建⼀个a.py和a.txt⽂件,放在同⼀⽬录下,在txt⽂件中随意输⼊⼀些内容,然后在a.py⽂件中输⼊以下代码
以上⽅法中 filepath为⽂件路径,使⽤时传⼊⼀个str的路径,length为每次读取字节长度,如输⼊2,则每次读取2个字节,while True是为了循环输出 如果f中有内容 则读取,如果没有则跳出循环,⽅法执⾏完毕
利⽤偏置进⾏流读取
什么是偏置进⾏读取,我们都知道有时候我不需要从头开始读取⽂件,就⽐如视频中⽤户点击进度条 我需要从进度条的位置开始读取⽂件,那么就需要加⼊偏置的概念,通过偏置来确定⽂件开始读取的位置,代码如下
具体代码只是在前⾯流读取的代码中添加了f.seek(length)⽅法,这个⽅法意思为跳过前⾯length长度个字节开始读取,也就是所谓的偏置。
调⽤⽅法
合理的运⽤好偏置和流读取有助于帮助提升服务器空间占⽤和解决安全读取静态⽂件的问题。def read_file_stream (filepath ,length ): with open (filepath ,’rb’) as f : while True : if f : f .read (length ) else : break
1
2
python怎么读文件3
4
5
6
7def read_file_stream (filepath ,length ): with open (filepath ,’rb’) as f : f .seek (2) #偏置函数 while True : if f : f .read (length ) else : break
1
2
3
4
5
6
7
8read_file_stream (a .txt ,2)
1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论