文件流

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())

最新文章

  1. 细说php一些常见的知识点
  2. 【FTP】C# System.Net.FtpClient库连接ftp服务器(下载文件)
  3. bootstrap笔记-布局
  4. 【你吐吧c#每日学习】10.29 C#字符串类型&Common operators
  5. 解决PHP中file_get_contents抓取网页中文乱码问题
  6. BZOJ 2326 数学作业(矩阵)
  7. iOS 有关自动轮播图片
  8. vs调试 本地IIS
  9. NGINX+UWSGI部署生产的DJANGO代码
  10. 在controller写sql在mapper拼接
  11. Easy Number Challenge(暴力,求因子个数)
  12. Word技巧【转载】
  13. flume的安装部署
  14. Python Day 2
  15. 一步一步写数据结构(二叉树的建立和遍历,c++)
  16. Netbeans 安装emmet插件
  17. macbook上安装homestead
  18. js正则函数match、exec、test、search、replace、split使用介绍集合,学习正则表达式的朋友可以参考下。
  19. fatal: Not a git repository (or any parent up to mount point /home)
  20. 关于浏览器被http://www.51jetso.com/劫持

热门文章

  1. 面试题(10)之 leetcode-26
  2. 基于Windows平台的Python多线程及多进程学习小结
  3. Elasticsearch 集群 - 健康检查
  4. hdu4632 Palindrome subsequence 回文子序列个数 区间dp
  5. 个人vim简单配置
  6. LeetCode题解分类汇总(包括剑指Offer和程序员面试金典,持续更新)
  7. VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/physMem_monitor.c:1123
  8. SASS - 环境搭建
  9. Android自定义View——简单实现边缘凹凸电子票效果
  10. vscode中c/c++头文件引用找不到飘红