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 ...
随机推荐
- VUE3企业级项目基础框架搭建流程(1)
开发环境和技术栈 操作系统 windows11 开发工具 vscode.phpstudy(小皮):nginx1.15.11, mysql5.7.26, php7.4,Navicat for MySQL ...
- 前端获取不到环境变量NODE_ENV
有时候我们期望通过执行不同的 npm script 来区分诸如 dev.prod.uat.sit等多环境下使用的不同变量 今天我也在整环境变量,碰到一个小小的bug.装了 cross-env 但还是没 ...
- boot-admin整合Quartz实现动态管理定时任务
淄博烧烤爆红出了圈,当你坐在八大局的烧烤摊,面前是火炉.烤串.小饼和蘸料,音乐响起,啤酒倒满,烧烤灵魂的party即将开场的时候,你系统中的Scheduler(调试器),也自动根据设定的Trigger ...
- vue中watch的详细用法(深度侦听)
vsCode插件 在vue中,使用watch来响应数据的变化.watch的用法大致有三种.下面代码是watch的一种简单的用法: <input type="text" v-m ...
- Linux中重定向应注意的事情
引言 你是否见过bash ... 2>&1 1>file.txt的写法? 还没发现这样的写法有什么问题? 那么恭喜你, 看完本文你又将学会一个新知识! 重定向的错误用法 以引言中命 ...
- getattr函数
函数说明 getattr(object, name, default=None) object:类实例 name:str 属性名 default:str 如果没有查找到,用该值替代 用法实现反射,主要 ...
- Djnago常用命令
pip: bundle,创建包含多个包的pybundles:freeze,显示所有已安装的包:help,显示可用命令:install,安装包:search,搜索PyPi:uninstall,卸载包:u ...
- KO之间互相调用
需求 假设有两个KO,命名为moduleA.KO,moduleB.KO,现在要实现在moduleB.KO中调用moduleA.KO中的函数. 实现 ModuleA实现 源码: #include < ...
- 各种版本的Linux 镜像下载网址
今天发现Linux 镜像下载网址感觉很不错,分享给有需要的小伙伴们 访问地址 Linux操作系统各版本ISO镜像下载(包括oracle linux\redhat\centos\ubuntu\debia ...
- 单例bean与类加载过程
构造单例bean的方式有很多种,我们来看一下其中一种,饿汉式 public class Singleton1 implements Serializable { //1.构造函数私有 private ...