当前位置: 首页 > news >正文

Python学习笔记11:文件

文件

打开文件

函数open的参数mode的最常见取值

描述
‘r’读取模式(默认值)
‘w’写入模式
‘x’独占写入模式
‘a’附加模式
‘b’二进制模式(与其他模式结合使用)
‘t’文本模式(默认值,与其他模式结合使用)
‘+’读写模式(与其他模式结合使用)
  • 显式地指定读取模式的效果与根本不指定模式相同
  • 写入模式让你能够写入文件,并在文件不存在时创建它
  • 独占写入模式更进一步,在文件已存在时引发FileExistsError异常
  • 在写入模式下打开文件时,既有内容将被删除(截断),并从文件开头处开始写入;如果要在既有文件末尾继续写入,可使用附加模式

文件的基本方法

  1. 读取和写入
>>> f = open('somefile.txt', 'w') 
>>> f.write('Hello, ') 
7 
>>> f.write('World!') 
6 
>>> f.close()>>> f = open('somefile.txt', 'r') 
>>> f.read(4) 
'Hell' 
>>> f.read() 
'o, World!'

PS:

随机存取

  • seek seek(offset[, whence])将当前位置(执行读取或写入的位置)移到 offset 和whence 指定的地方
  • tell 返回当前位于文件的什么位置
  1. 使用管道重定向输出
$ cat somefile.txt | python somescript.py | sort
  1. 读取和写入行
  • readline 成行地读取,也可提供一个非负整数,指定readline最多可读取多少个字符
  • readlines 读取文件中所有行
  • writelines 接受一个字符串列表(实际上,可以是任何序列或可迭代对象),并将这些字符串都写入到文件(或流)中

PS:

没有writeline,可以使用write

  1. 关闭文件
  • close 将文件关闭
  • flush 重置缓冲,让所做的修改反映到磁盘文件中

PS:根据使用的操作系统和设置,flush可能出于锁定考虑而禁止其他正在运行的程序访问这个文件

# try/finally
# 在这里打开文件
try: # 将数据写入到文件中
finally: file.close()# with
with open("somefile.txt") as somefile: do_something(somefile)

迭代文件内容

  1. 每次一个字符(或字节)
with open(filename) as f: while True:char = f.read(1) if not char: break process(char)
  1. 每次一行
with open(filename) as f: while True: line = f.readline() if not line: break process(line)
  1. 读取所有内容(文件不太大时)
# 使用read迭代字符
with open(filename) as f: for char in f.read(): process(char)# 使用readlines迭代行
with open(filename) as f: for line in f.readlines(): process(line)
  1. 使用fileinput实现延迟行迭代
# 只读取实际需要的文本部分,或使用while循环和readline结合
import fileinput 
for line in fileinput.input(filename): process(line)
  1. 文本迭代器
with open(filename) as f: for line in f: process(line)

小结

类似于文件的对象:类似于文件的对象是支持read和readline(可能还有write和writelines)等方法的对象。

打开和关闭文件:要打开文件,可使用函数open,并向它提供一个文件名。如果要确保即便发生错误时文件也将被关闭,可使用with语句。

模式和文件类型:打开文件时,还可指定模式,如’r’(读取模式)或’w’(写入模式)。通过在模式后面加上’b’,可将文件作为二进制文件打开,并关闭Unicode编码和换行符替换。

标准流:三个标准流(模块sys中的stdin、stdout和stderr)都是类似于文件的对象,它们实现了UNIX标准I/O机制(Windows也提供了这种机制)。

读取和写入:要从文件或类似于文件的对象中读取,可使用方法read;要执行写入操作,可使用方法write。

读取和写入行:要从文件中读取行,可使用readline和readlines;要写入行,可使用writelines。

迭代文件内容:迭代文件内容的方法很多,其中最常见的是迭代文本文件中的行,这可通过简单地对文件本身进行迭代来做到。还有其他与较旧Python版本兼容的方法,如使用readlines。

http://www.lryc.cn/news/28240.html

相关文章:

  • django-filter的使用
  • 时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络)
  • 【C++】string的成员函数、成员常量和非成员函数
  • 网络互连模型:OSI 七层模型
  • 18跨越语言:不同语言间进行RPC通信
  • 解压缩工具:Bandizip 中文
  • JAVA知识点全面总结2:面向对象
  • DNS作用及工作原理
  • Android 9.0 wifi的随机mac地址修改为固定不变
  • Apinto 网关 V0.11.1 版本发布,多协议互转,新增编码转换器,接入 Prometheus
  • Android 12.0 根据app包名授予app监听系统通知权限
  • mysql视图和存储过程
  • uniapp 实现人脸认证
  • 自学大数据第三天~终于轮到hadoop了
  • Unity 入门精要00---Unity提供的基础变量和宏以及一些基础知识
  • Kubernetes的网络架构及其安全风险
  • Blob分析+特征+(差分)
  • Flink 提交模式
  • 网络总结知识点(网络工程师必备)三
  • 测开:前端基础-css
  • Java学习记录之JDBC
  • 矩阵翻硬币
  • 【C语言跬步】——指针数组和数组指针(指针进阶)
  • 第十四届蓝桥杯模拟赛第三期(Python)
  • css-盒模型
  • Linux | 调试器GDB的详细教程【纯命令行调试】
  • wifi芯片大市场和个人小生活
  • 全国计算机技术与软件专业技术资格(水平)考试 上半年2023年3月13日开始,下半年2023年8月14日开始
  • 大数据框架之Hadoop:MapReduce(六)Hadoop企业优化
  • Spring File Storage的详细文档