python笔记:第十二章文件
1.打开文件
位于自动导入的模块IO中,无需手动导入。
f = open('D:\M\test.txt')
若文件不存在,则报错
Traceback (most recent call last):
File "d:\M\github\Python\Demo\t14.py", line 1, in <module>
f = open('D:\M\test.txt')
^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 22] Invalid argument: 'D:\\M\test.txt'
1.1 文件模式
只指定文件名的话,会得到一个可读文件对象。若想写入文件,必须通过添加参数来指出。
'r' 以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。
'w' 以写入方式打开文件。如果文件存在则覆盖,如果文件不存在则创建一个新文件。
'a' 以追加模式打开文件。如果文件存在,则在文件末尾追加写入,如果文件不存在则创建一个新文件。
'x' 以独占方式创建文件,如果文件已经存在则返回 FileExistsError 错误。
'b' 以二进制模式打开文件。
't' 以文本模式打开文件(默认模式)。
'+' 可读写模式(可与其他模式组合使用)。
默认模式为
rt,将把文件视为Unicode文本,自动执行解码和编码,且默认使用UTF-8编码。可以使用关键字参数
encoding和errors。若文件为声音图片视频之类的,可以使用二进制模式来禁用与文本相关的功能。、
2.文件的基本方法
2.1 读取和写入
f.write
f = open('test.txt', 'w')
f.write('Hello')
f.close # 记得关闭

f = open('test.txt', 'r')
str1 = f.read(4) # 读取前4个字符 指针到达第5个字符
print(str1)
str1 = f.read() # 从第五个字符开始读取
print(str1)
>
Hell
o
若想让指针回到起始位置,用f.seek(0)
f = open('test.txt', 'r')
str1 = f.read(4)
print(str1)
f.seek(0) # 指针回溯
str1 = f.read()
print(str1)
>
Hell
Hello
2.2 成行地读取和写入
2.2.1 读取方法readline
可以不提供参数,读取一行后返回
test.txt 文件内容为

注意:文件中每一行都有一个换行符,读取时,换行符也会被读取
f = open('test.txt', 'r')
str1 = f.readline()
str2 = f.readline()
print(str1)
print(str2)
运行结果
Hello
Bob
想要不读取换行符,可用strip()
f = open('test.txt', 'r')
str1 = f.readline().strip()
str2 = f.readline().strip()
print(str1)
print(str2)
运行结果
Hello
Bob
可以指定读取字符数量
f = open('test.txt', 'r')
str1 = f.readline(5)
print(str1)
> Hello
读取文件所有行,以列表返回 readlines
f = open('test.txt', 'r')
str1 = f.readlines()
print(str1)
> ['Hello\n', 'Bob\n', 'bye']
默认状态下,VSCode不会即时保存,需要先将test.txt保存,再运行程序
2.2.2 写入方法 writeline
先擦除所有内容,然后再写入
运行前,test.txt文件内容

f = open('test.txt', 'w')
f.writelines('good')
f.close
运行后

写入时,不会自动添加换行符,需要自己添加,没有writeline方法,可以使用write
f = open('test.txt', 'w')
f.write('middle')
f.writelines('bad\n')
f.writelines('good')
f.close
运行结果

2.3 记得关闭文件!
可以使用 try/finally 语句,再finally中调用close
try:
f = open('test.txt', 'w')
f.write('middle')
f.writelines('bad\n')
f.writelines('good')
finally:
f.close
还可以使用with语句关闭
# 将文件对象赋给test
with open('test.txt', 'w') as test:
test.write('middle')
运行后文件自动关闭
3.迭代文件内容
3.1 每次一个字符
with open('test.txt', 'r') as f:
while True:
char = f.read(1)
if not char: break
print(char, end=' ')
文件内容:

运行结果
C h i n a
3.2 每次一行
文件内容

with open('test.txt', 'r') as f:
while True:
str = f.readline().strip() # 去掉换行符
if not str: break
print(str, end=' ')
> China is the best
3.3 读取所有内容
with open('test.txt', 'r') as f:
str = f.read()
print(str, end=' ')
运行结果
China
is
the
best
3.4 延迟行迭代fileinput
fileinput 可以轻松地处理多个输入流,包括文件、标准输入流等,同时还支持行迭代和缓冲流处理。还可以对大型文件(几个TB)进行处理。
常见的使用方式包括:
- 逐行读取文件中的数据,例如上面提到的例子。
- 处理多个文件,例如通过 glob 模块来指定需要处理的文件列表。
- 实现管道功能,例如通过 subprocess 模块来实现将命令的输出作为输入流来处理。
文件内容

# 逐行读取文件并统计出现次数
for line in fileinput.input('test.txt'):
key = line.strip()
counts[key] = counts.get(key, 0) + 1
# 输出统计结果
for key, value in counts.items():
print(key, '--', value)
运行结果
1 -- 3
2 -- 2
3 -- 1
4 -- 1
python笔记:第十二章文件的更多相关文章
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...
- 进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用
进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数 ...
- python 教程 第十二章、 标准库
第十二章. 标准库 See Python Manuals ? The Python Standard Library ? 1) sys模块 import sys if len(sys.argv) ...
- [CSAPP笔记][第十二章并发编程]
第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟 ...
- python 教程 第二十二章、 其它应用
第二十二章. 其它应用 1) Web服务 ##代码 s 000063.SZ ##开盘 o 26.60 ##最高 h 27.05 ##最低 g 26.52 ##最新 l1 26.66 ##涨跌 c ...
- o'Reill的SVG精髓(第二版)学习笔记——第十二章
第十二章 SVG动画 12.1动画基础 SVG的动画特性基于万维网联盟的“同步多媒体集成语言”(SMIL)规范(http://www.w3.org/TR/SMIL3). 在这个动画系统中,我们可以指定 ...
- Python基础学习笔记(十二)文件I/O
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-files-io.html ▶ 键盘输入 注意raw_input函 ...
- Java笔记(十二) 文件基础技术
文件基础技术 一.文件概述 一)基本概念 1.文件的分类: 1)文本文件:文件中每个二进制字节都是某个可打印字符的一部分.如.java文件 2)二进制文件:文件中每个二进制字节不一定用来表示字符,也可 ...
- Python开发【十二章】:ORM sqlalchemy
一.对象映射关系(ORM) orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却 ...
- python练习六十二:文件处理,往文件中所有添加指定的前缀
往文件中所有添加指定的前缀 方法一:open方法 f_r = open('text.txt') f_w = open('text_new.txt','w+') i = 0 while True: i ...
随机推荐
- 10分钟带你徒手做个Java线程池
摘要:花10分钟开发一个极简版的Java线程池,让小伙伴们更好的理解线程池的核心原理. 本文分享自华为云社区<放大招了,冰河带你10分钟手撸Java线程池,yyds,赶快收藏吧>,作者:冰 ...
- 原来这就是所谓的 JSR!
相信大家在学习 Java 的过程中,或多或少都见过 JSR 这个词.本篇文章就科普下什么是 JSR. 什么是 JSR ? JSR(Java Specification Requests),是指 Jav ...
- [双目视差] 单双目MATLAB 相机标定(二)双目摄像机标定
文章目录 单双目MATLAB 相机标定(二)双目摄像机标定 一.环境准备 二.标定过程 单双目MATLAB 相机标定(二)双目摄像机标定 一.环境准备 MATLAB R2014a+windows7 6 ...
- 深度学习实现案例(Tensorflow、PaddlePaddle)
深度学习实验案例 文章目录 深度学习实验案例 一.基础理论 实验一:自定义感知机 实验二:验证图像卷积运算效果 二.Tensorflow 实验一:查看Tensorflow版本 实验二:Hellowor ...
- 【必知必会的MySQL知识】②使用MySQL
目录 前言 启动MySQL服务 连接MySQL MySQL数据库基本命令 小结 前言 根据上一篇文章[必知必会的MySQL知识]①初探MySQL的内容,想必您对MySQL数据库有了一个整体的了解了,并 ...
- MySQL如何获取binlog的开始时间和结束时间
MySQL数据库恢复到指定时间点时,我们必须通过MySQL全备+MySQL增量备份(可选)+MySQL的二进制日志(binlog)进行重放来恢复到指定时间点,实际的生产环境中,可能一段时间内生成了多个 ...
- #Python 缺失值的检测与处理,检测部分
Python 缺失值的检测与处理,分两部分笔记,第一部分是检测缺失值部分
- 2022-05-12:小歪每次会给你两个字符串: 笔记s1和关键词s2,请你写一个函数, 判断s2的排列之一是否是s1的子串。 如果是,返回true; 否则,返回false。 来自字节飞书团队。
2022-05-12:小歪每次会给你两个字符串: 笔记s1和关键词s2,请你写一个函数, 判断s2的排列之一是否是s1的子串. 如果是,返回true: 否则,返回false. 来自字节飞书团队. 答案 ...
- 2021-03-22:小虎去买苹果,商店只提供两种类型的塑料袋,每种类型都有任意数量。1.能装下6个苹果的袋子,2.能装下8个苹果的袋子。小虎可以自由使用两种袋子来装苹果,但是小虎有强迫症,他要求自己使用的袋子数量必须最少,且使用的每个袋子必须装满。给定一个正整数N,返回至少使用多少袋子。如果N无法让使用的每个袋子必须装满,返回-1。
2021-03-22:小虎去买苹果,商店只提供两种类型的塑料袋,每种类型都有任意数量.1.能装下6个苹果的袋子,2.能装下8个苹果的袋子.小虎可以自由使用两种袋子来装苹果,但是小虎有强迫症,他要求自己 ...
- SRE方法论之拥抱风险
一.系统不可能100%可靠 系统不可能100%可靠,人都不可能100%健康,更何况我们人类创造的系统?所以,任何软件系统都不应该一味地追求 100%可靠.事实证明,可靠性超过一定值后,再提高可靠性对于 ...