文件流

1.文件流的本质

文件流的操作,一般都会有三个步骤
. 打开文件
. 操作文件
. 关闭文件 f = open('test', encoding='utf8',mode='r')
print(f.read())
f.close()
# 文件流的基本参数
# . file: 打开一个文件
# 2. mode: 打开的模式,默认模式为txt模式
# . buffering: 设置缓冲
# . encoding: 字符编码,一般用utf-
# . errors: 报错级别
# . newline: 区分换行符
# . closefd: 传入的file参数类型
# . opener: # mode详情
# r 只读,无法编写文件
# w 只写,(注意:工作中千万慎用此模式,这个模式下,pycharm如果重新运行,导致整个文件被清空后,再重新写入。导致所有数据丢失)
# a append(追加模式),即在文件最后写入,但也一样不支持读文件
# r+    打开一个文件用于读写。文件指针将会放在文件的结尾写入。(只能从最后面位置写入)
# w+ 打开一个文件用于写读。先覆盖原来的文件,然后再写入。
# a+ 追加读,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
一般情况我们用r+模式和a+模式,安全 还有针对二进制文件的操作,用法与上面的是一样的。但二进制文件的话在要后面+b
(如:ab,rb,wb,rb+...)

文件流的常用方法

f.readline()    # 读取一行
f.readlines() # 列表,内容是:所有的行,一行一个索引
f.tell() # 查看光标位置
f.seek(0) # 移动光标回到指定位置,以字符串个数计算
f.flush() # 刷新把内存的文件写入文件里
f.writable() # 判断是否可写
f.readable() # 判断是否可读
f.name # 打印该文件名
f.truncate() # 截断,不写参数,会清空。因为截断了0个。字符串长度
# 下面的忽略,了解即可
f.encoding # 打印该文件的编码
f.buffer #
f.errors #
f.fileno() # 返回文件的编号,
f.isatty() # 判断是否终端设备

文件流的循环

我们上面已经知道,readlines会把一个文件流的每一行变成列表,所以我们是可以通过readlines这个方法对文件流循环的。
for index,line in enumerate(f.readlines()):
if index == :
print('分割线'.center(,'-'))
continue
print(index+, line.rstrip()) 但是,如果是readlines变成列表,如果该文件非常大,比如2G以上的内容,这样就会导致加载到内存里,导致性能下降。如果是20G,或者200G呢,直接down机。
所以,我们做文件流的循环,通常通过迭代器的方法。(加载一行,读取一行。迭代器,后面会详细详解) 由于迭代器,没有索引了。所以我们要自己做一个计数器count=0
count = 0
for line in f:
count += 1
if count == :
print('分割线'.center(, '-'))
continue
print(count, line.rstrip())
  print(count, line.rstrip())

python3 文件流的更多相关文章

  1. FILE文件流的中fopen、fread、fseek、fclose的使用

    FILE文件流用于对文件的快速操作,主要的操作函数有fopen.fseek.fread.fclose,在对文件结构比较清楚时使用这几个函数会比较快捷的得到文件中具体位置的数据,提取对我们有用的信息,满 ...

  2. Java总结——文件&流

    最近学习了Java的输入输出,脑子里有两点乱,不过比之前的思路好像清晰了很多.脑子刚刚接收这些信息的时候,整个就是懵逼的,又是文件又是流的,文件到底干嘛的,流到底干嘛的?恩,后来,想了想,其实也不难理 ...

  3. C++文件流类与文件流对象

    文件流是以外存文件为输入输出对象的数据流.输出文件流是从内存流向外存文件的数据,输入文件流是从外存文件流向内存的数据.每一个文件流都有一个内存缓冲区与之对应. 请区分文件流与文件的概念,不用误以为文件 ...

  4. c# 根据文件流查看文件真实格式

    今天在做图片注册的功能的时候,测试提出一个问题:将随便一个非图片文件将后缀名改为jpg或其他,上传时应检验图片合法性.然后同事给提供了根据文件流前两个字节判断文件真实格式的思路,代码如下: publi ...

  5. c语言中的文件流

    一.打开和关闭文件 #include int main( void ) { FILE* pReadFile = fopen( "E:\\mytest.txt", "r&q ...

  6. iOS - OC NSStream 文件流

    前言 @interface NSStream : NSObject @interface NSOutputStream : NSStream 1.文件流的使用 NSString *filePath = ...

  7. RABBITMQ/JAVA 客户端测试(再补:利用文件流)

    (一)这里可以先复习一下java输入输出流和文件操作--- 1.File类保存文件或目录的各种元数据信息,包括文件名.文件长度.最后修改时间.是否可读.获取当前文件的路径名.判断指定文件是否存在.获取 ...

  8. 文件_ _android从资源文件中读取文件流并显示的方法

    ======== 1   android从资源文件中读取文件流并显示的方法. 在android中,假如有的文本文件,比如TXT放在raw下,要直接读取出来,放到屏幕中显示,可以这样: private ...

  9. 文件流StreamReader和StreamWriter的使用

    using (StreamReader sr = new StreamReader(@"C:\Users\shuai\Desktop\文件流读取.txt", Encoding.De ...

随机推荐

  1. you-get加ffmpeg获取视频素材并转格式

    最近做视频,觉得素材不好下载,下载了转格式又很麻烦,终于,在网上ob了很久的我找到了属于自己的工具. you-get视频下载 当你在网上找视频素材的时候发现了一个自己觉得很有意思的视频,但是获取这个视 ...

  2. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring使用AspectJ开发AOP基于XML和基于Annotation

    AspectJ 是一个基于 Java 语言的 AOP 框架,它扩展了 Java 语言.Spring 2.0 以后,新增了对 AspectJ 方式的支持,新版本的 Spring 框架,建议使用 Aspe ...

  3. CF1141D Colored Boots

    There are n left boots and n right boots. Each boot has a color which is denoted as a lowercase Lati ...

  4. vue学习(三)组件传值

    组件 官网(https://cn.vuejs.org/v2/guide/components.html) 组件分为局部组件和全局组件 局部组件:是内容中国的一部分 只是在当前组件加载的时候 全部组件: ...

  5. ofo身陷被收购、破产传闻,中国的共享单车还能活下去吗?

    大潮退去,终将现出谁在"裸泳".尤其是那些看似火爆却迅速陨落的新事物,总是避免不了让人发出"伤仲永"的感慨.这其中,共享经济就是很典型的案例.共享睡眠舱.共享马 ...

  6. H5 - 本地数据存储 - localStorage.setItem

  7. tkinter组件详解之Label

    tkinter组件详解之Label Label组件用于在屏幕上显示文本或图像.最红呈现出的结果是由背景和前景叠加构成的. 函数定义:Label(master=None, cnf={}, **kw) 背 ...

  8. 在阿里云Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4

    上次在网上找了一个在阿里云Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4的文档,可能是这个文档不是最新版的,安装的时候遇到了很多问题, 最后跟一个大神要了一 ...

  9. Android自定义View——多边形网格属性图

      1.初始化变量 2.属性图解   3.如果想切换到5.6.7边形等等,则必须修改下面几条数据 4.获取宽和高 5.绘制图形 1.开始画画前:我们要把画笔准备好,这里看代码就能明白意思了,接着把整个 ...

  10. idea~创建maven webapp项目

    1.选择 org.apache.maven.archtypes:maven-archtype-webapp 2.禁止远程下载 archetypeCatalog=internal 目的是不远程下载,否则 ...