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 ...
随机推荐
- Linx 阶段一
Linux Linux常用命令 具体演示 1). ls 2). pwd 3). touch 4). mkdir 5). rm 使用技巧 1. 连按 Tab健自动补齐文件名 2. ll 查看当前目录文件 ...
- RabbitMQ详解(上)
一:MQ的相关概念 MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息.在 ...
- es6 新增 set 和 map数据结构以及应用场景
https://www.cnblogs.com/sexintercourse/p/12269580.html Set数据容器,这是一个能够存储无重复值的有序列表. 1. 创建集合 set let se ...
- InnoSetup打包 添加.NET环境安装
这是封装出来的针对.NET环境安装的精简流程 根据流程新建一个配置文件 教程都是很简单的,可以参考<InnoSetup 客户端程序打包教程> 添加.NET安装基本的函数及辅助方法 在[Se ...
- [Pytorch框架] PyTorch 中文手册
PyTorch 中文手册 书籍介绍 这是一本开源的书籍,目标是帮助那些希望和使用PyTorch进行深度学习开发和研究的朋友快速入门. 由于本人水平有限,在写此教程的时候参考了一些网上的资料,在这里对他 ...
- JavaFx 生成二维码工具类封装
原文地址: JavaFx 生成二维码工具类封装 - Stars-One的杂货小窝 之前星之音乐下载器有需要生成二维码功能,当时用的是一个开源库来实现的,但是没过多久,发现那个库依赖太多,有个http- ...
- 2021-07-19:给定一个正数N,比如N = 13,在纸上把所有数都列出来如下: 1 2 3 4 5 6 7 8 9 10 11 12 13,可以数出1这个字符出现了6次,给定一个正数N,如果把1
2021-07-19:给定一个正数N,比如N = 13,在纸上把所有数都列出来如下: 1 2 3 4 5 6 7 8 9 10 11 12 13,可以数出1这个字符出现了6次,给定一个正数N,如果把1 ...
- pbootcms对接微信扫码登录代码核心片段和步骤(前后端)
首先需要在微信公众平台或开放平台中创建应用,并获取到AppID和AppSecret. 在pbootcms中创建一个自定义模板页面(例如:wechat_login.html),并在该页面中添加以下代码, ...
- 密码暴力破解工具——九头蛇(hydra)使用详解及实战
转载出处:https://zhuanlan.zhihu.com/p/540998739 二.使用方法 语法:Hydra 参数 IP 服务 参数: -l login 小写,指定用户名进行破解 -L fi ...
- Python基础 - 标识符命名规范
标识符是什么? 标识符主要用来给变量名,函数名,方法名,类名起名时要遵循的规范 硬性规则 见名知意(使用中文转译后的英文) 由字母,数字,下划线组成, 并且不能以数字开头, 不能和Python关 ...