文件流

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. 如何让手游更省带宽,耗电量更少?TBR渲染架构解析!

    如何让手游更省带宽,耗电量更少?渲染或是其中一个可突破的点.本文中,腾讯游戏学院专家Hailong将从为大家解析TBR渲染架构的特点. 什么是TBR? 全称是Tile Based Rendering, ...

  2. T_SQL 获取系统当前时间与明天时间的两种格式

    --获取系统明天的时间 select CONVERT(nvarchar(20),dateadd(d,1,getdate()),120)         2017-01-21 15:04:10 sele ...

  3. 启用sql日志

    SHOW VARIABLES LIKE "general_log%"; -- 查询是否启用日志 SET GLOBAL general_log = 'ON';  -- 设置启用 SE ...

  4. exctern C

    在C++中调用C语言 因为C++扩展了函数重载.编译时会将函数名修改,所以直接条用会出错. #ifdef __cplusplusextern "C" {#endif // __cp ...

  5. 创建简单web项目

    Intellij Idea直接安装(可根据需要选择自己设置的安装目录),jdk使用1.6/1.7/1.8都可以,主要是配置好系统环境变量,tomcat7上tomcat的官网下载压缩包解压即可. 一.创 ...

  6. 服务器上安装解决ole错误

    服务器上安装此插件  提取码:9kiw

  7. 从单个系统到云翼一体化支撑,京东云DevOps推进中的一波三折

    作者:王利莹 采访嘉宾:京东云DevOps团队负责人 郑永宽 今年,IDC 特别针对中国地区发布了<IDC MarketScape:中国 DevOps 云市场2019,厂商评估>研究报告, ...

  8. 05 GUI UGUI

    在Unity开发过程中,不论是3D还是2D开发都需要大量的UI界面来配合使用,用来达到更好的效果 GUI:在Unity脚本生命周期回调方法OnGUI中实现,每一帧渲染两次,在OnGUI中的GUI界面元 ...

  9. PAT Advanced 1034 Head of a Gang (30) [图的遍历,BFS,DFS,并查集]

    题目 One way that the police finds the head of a gang is to check people's phone calls. If there is a ...

  10. Mysql插入数据里有中文字符出现Incorrect string value的错误

    问题:Mysql插入数据里有中文字符出现Incorrect string value的错误   描述:CMD里直接敲代码插入数据   提示的部分截取为:ERROR 1366 (HY000): Inco ...