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编码。

  • 可以使用关键字参数encodingerrors

  • 若文件为声音图片视频之类的,可以使用二进制模式来禁用与文本相关的功能。、

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笔记:第十二章文件的更多相关文章

  1. Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

    Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...

  2. 进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用

    进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数 ...

  3. python 教程 第十二章、 标准库

    第十二章. 标准库 See Python Manuals ? The Python Standard Library ? 1)    sys模块 import sys if len(sys.argv) ...

  4. [CSAPP笔记][第十二章并发编程]

    第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟 ...

  5. python 教程 第二十二章、 其它应用

    第二十二章. 其它应用 1)    Web服务 ##代码 s 000063.SZ ##开盘 o 26.60 ##最高 h 27.05 ##最低 g 26.52 ##最新 l1 26.66 ##涨跌 c ...

  6. o'Reill的SVG精髓(第二版)学习笔记——第十二章

    第十二章 SVG动画 12.1动画基础 SVG的动画特性基于万维网联盟的“同步多媒体集成语言”(SMIL)规范(http://www.w3.org/TR/SMIL3). 在这个动画系统中,我们可以指定 ...

  7. Python基础学习笔记(十二)文件I/O

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-files-io.html ▶ 键盘输入 注意raw_input函 ...

  8. Java笔记(十二) 文件基础技术

    文件基础技术 一.文件概述 一)基本概念 1.文件的分类: 1)文本文件:文件中每个二进制字节都是某个可打印字符的一部分.如.java文件 2)二进制文件:文件中每个二进制字节不一定用来表示字符,也可 ...

  9. Python开发【十二章】:ORM sqlalchemy

    一.对象映射关系(ORM) orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却 ...

  10. python练习六十二:文件处理,往文件中所有添加指定的前缀

    往文件中所有添加指定的前缀 方法一:open方法 f_r = open('text.txt') f_w = open('text_new.txt','w+') i = 0 while True: i ...

随机推荐

  1. springboot项目 宿舍管理系统 (源码+数据库文件+1w字论文+ppt)

    来了就点个赞再走呗,即将毕业的兄弟有福了文章底部获取源码springboot项目 宿舍管理系统 (源码+数据库文件+1w字论文+ppt)技术框架:java+springboot+vue+mysql后端 ...

  2. 视频会议中的AEC、AGC、ANS是什么?

    视频会议中的AEC.AGC.ANS是什么? 1.AGC是自动增益补偿功能(Automatic Gain Control),AGC可以自动调麦克风的收音量,使与会者收到一定的音量水平,不会因发言者与麦克 ...

  3. 基于SqlSugar的开发框架循序渐进介绍(29)-- 快速构建系统参数管理界面-Vue3+ElementPlus

    在随笔<基于SqlSugar的开发框架循序渐进介绍(28)-- 快速构建系统参数管理界面>中介绍了基于SqlSugar开发框架,构建系统参数管理的后端API部分,以及WInform界面部分 ...

  4. 2023-04-21:用go语言重写ffmpeg的metadata.c示例。

    2023-04-21:用go语言重写ffmpeg的metadata.c示例. 答案2023-04-21: 这段 Go 代码演示了如何使用 ffmpeg-go 库中的函数来读取多媒体文件元数据,包括视频 ...

  5. 2022-03-27:class AreaResource { String area; // area表示的是地区全路径,最多可能有6级,比如: 中国,四川,成都 或者 中国,浙江,杭州 Str

    2022-03-27:class AreaResource { String area; // area表示的是地区全路径,最多可能有6级,比如: 中国,四川,成都 或者 中国,浙江,杭州 Strin ...

  6. 2021-10-04:解码方法 II。‘A‘ -> 1,‘B‘ -> 2,...‘Z‘ -> 26。*是1-9,不包含0。给你一个字符串 s ,由数字和 ‘*‘ 字符组成,返回 解码 该字符串的方法

    2021-10-04:解码方法 II.'A' -> 1,'B' -> 2,-'Z' -> 26.是1-9,不包含0.给你一个字符串 s ,由数字和 '' 字符组成,返回 解码 该字符 ...

  7. Requested setting LOGGING_CONFIG, but settings are not configured

  8. Accurate SerDes LineRate

    测试现象:(单板A板载7A series,单板B板载7K series) 1. 单板A板载2个type C接口,通过线缆自环,GTP near-end loopback, OK. 2. 2块单板A,使 ...

  9. 【HDU】1312 Red andBlack (DFS&BFS经典好题)

    Red and Black 题目 我是题目链接 题解 找出所能到达的所有黑色的数量,用DFS和BFS均可. BFS: #include <iostream> #include <qu ...

  10. OpenAI 官宣首个 ChatGPT iOS 应用

    最近,OpenAI 宣布推出官方 iOS 应用,允许用户随时随地访问其高人气 AI 聊天机器人,此举也打破了近几个月内苹果 App Store 上充斥似是而非的山寨服务的窘境. 该应用程序是 Chat ...