python3 文件流
文件流
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 文件流的更多相关文章
- FILE文件流的中fopen、fread、fseek、fclose的使用
FILE文件流用于对文件的快速操作,主要的操作函数有fopen.fseek.fread.fclose,在对文件结构比较清楚时使用这几个函数会比较快捷的得到文件中具体位置的数据,提取对我们有用的信息,满 ...
- Java总结——文件&流
最近学习了Java的输入输出,脑子里有两点乱,不过比之前的思路好像清晰了很多.脑子刚刚接收这些信息的时候,整个就是懵逼的,又是文件又是流的,文件到底干嘛的,流到底干嘛的?恩,后来,想了想,其实也不难理 ...
- C++文件流类与文件流对象
文件流是以外存文件为输入输出对象的数据流.输出文件流是从内存流向外存文件的数据,输入文件流是从外存文件流向内存的数据.每一个文件流都有一个内存缓冲区与之对应. 请区分文件流与文件的概念,不用误以为文件 ...
- c# 根据文件流查看文件真实格式
今天在做图片注册的功能的时候,测试提出一个问题:将随便一个非图片文件将后缀名改为jpg或其他,上传时应检验图片合法性.然后同事给提供了根据文件流前两个字节判断文件真实格式的思路,代码如下: publi ...
- c语言中的文件流
一.打开和关闭文件 #include int main( void ) { FILE* pReadFile = fopen( "E:\\mytest.txt", "r&q ...
- iOS - OC NSStream 文件流
前言 @interface NSStream : NSObject @interface NSOutputStream : NSStream 1.文件流的使用 NSString *filePath = ...
- RABBITMQ/JAVA 客户端测试(再补:利用文件流)
(一)这里可以先复习一下java输入输出流和文件操作--- 1.File类保存文件或目录的各种元数据信息,包括文件名.文件长度.最后修改时间.是否可读.获取当前文件的路径名.判断指定文件是否存在.获取 ...
- 文件_ _android从资源文件中读取文件流并显示的方法
======== 1 android从资源文件中读取文件流并显示的方法. 在android中,假如有的文本文件,比如TXT放在raw下,要直接读取出来,放到屏幕中显示,可以这样: private ...
- 文件流StreamReader和StreamWriter的使用
using (StreamReader sr = new StreamReader(@"C:\Users\shuai\Desktop\文件流读取.txt", Encoding.De ...
随机推荐
- 腾讯云服务器上搭建 2.176.3-1.1 版本的Jenkins,jdk 11
[root@VM_0_12_centos fonts]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@VM_0 ...
- Linux学习43 CCNA网络知识-计算机网络基础
一.Linux网络配置属性 1.计算机网络 TCP/IP:协议簇,协议栈(使用的模型) ISO组织制定了OSI七层模型协议栈(学习的模型) 2.网卡 a.MAC:Media Access Contro ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring声明式事务管理(基于Annotation注解方式实现)
在 Spring 中,除了使用基于 XML 的方式可以实现声明式事务管理以外,还可以通过 Annotation 注解的方式实现声明式事务管理. 使用 Annotation 的方式非常简单,只需要在项目 ...
- java的JDBC的事务学习
https://www.cnblogs.com/chy18883701161/p/11372089.html
- UVA - 10954 Add All (全部相加)(Huffman编码 + 优先队列)
题意:有n(n <= 5000)个数的集合S,每次可以从S中删除两个数,然后把它们的和放回集合,直到剩下一个数.每次操作的开销等于删除的两个数之和,求最小总开销.所有数均小于10^5. 分析:按 ...
- c#textBox控件限制只允许输入数字及小数点,是否为空
c#textBox控件限制只允许输入数字及小数点 转载 //判断按键是不是要输入的类型. if (((int)e.KeyChar < 48 || (int)e.KeyChar > 57) ...
- C++中的string详解
标准库类型string表示可变长的字符序列,为了在程序中使用string类型,我们必须包含头文件: #include <string> 声明一个字符串 声明一个字符串有很多种方式,具体如 ...
- MarkDown简易教程+语法
一.标题 一个#是一级,两个#是二级,最大六级 二.字体 1.加粗 要加粗的文字左右分别用两个*号包起来 2.斜体 要倾斜的文字左右分别用一个*号包起来 3.斜体加粗 要倾斜和加粗的文字左右分别用三个 ...
- promise核心技术 1 实例对象/函数对象
一个程序员要在看到代码的语法同时判断数据类型 知道语法是基础 基础才能延伸功能 //一行代码 a()[0]() // a() 首先推断出a是一个函数 //a()[0] 判断a函数的返回值是一个数组 ...
- faster RCNN(keras版本)代码讲解(3)-训练流程详情
转载:https://blog.csdn.net/u011311291/article/details/81121519 https://blog.csdn.net/qq_34564612/artic ...