python笔记:第十二章文件

这篇具有很好参考价值的文章主要介绍了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编码。

  • 可以使用关键字参数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)

运行结果文章来源地址https://www.toymoban.com/news/detail-588510.html

1 -- 3
2 -- 2
3 -- 1
4 -- 1

到了这里,关于python笔记:第十二章文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (数字图像处理MATLAB+Python)第十二章图像编码-第一、二节:图像编码基本理论和无损编码

    图像编码 :一种将数字图像转换为压缩表示形式的过程。它的目标是减少图像数据的存储空间,并在传输或存储时减少带宽和存储需求、主要分为两类 无损压缩 :尽可能地保留原始图像的所有信息,以实现无失真的压缩。其中最常见的算法之一是无损JPEG(JPEG-LS)编码,它

    2024年02月10日
    浏览(30)
  • 【正点原子STM32连载】 第十二章 SYSTEM文件夹介绍 摘自【正点原子】STM32F103 战舰开发指南V1.2

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html SYSTEM文件夹里面的代码由正点原子提供,是STM32F1xx系列的底层核心驱动函数,可以用在STM32F1xx系列的

    2024年02月05日
    浏览(45)
  • 第十二章 外观模式

    `

    2023年04月25日
    浏览(27)
  • 第十二章 kafka

    Producer :Producer即生产者,消息的产生者,是 消息的入口 。 kafka cluster :          Broker :Broker是 kafka实例 ,每个服务器上有一个或多个kafka的实例,我们姑且认为每个broker对应一台服务器。每个kafka集群内的broker都有一个不重复的编号,如图中的broker-0、broker-1等…… 主

    2024年02月13日
    浏览(30)
  • 第十二章 sys模块

    什么是Python 解释器 当编写Python 代码时,通常都会得到一个包含Python 代码的以.py 为扩展名的文件。要运行编写的代码,就需要使用Python 解释器去执行.py 文件。因此,Python 解释器就是用来执行Python 代码的一种工具。常见的Python 解释器有以下几种: CPython:Python 的官方解释器

    2024年02月09日
    浏览(24)
  • 第十二章:泛型(Generic)

    目录 12.1:为什么要有泛型? 12.2:在集合中使用泛型 12.3:自定义泛型结构 12.4:泛型在继承上的体现 12.5:通配符的使用 12.1:为什么要有泛型?         泛型:(标签)允许在定义类、接口时候通过一个标识来表示类中某个属性的类型或者是某个方法的返回值及参数类

    2024年02月07日
    浏览(26)
  • 第十二章Session

    注意:前面的Cookie是保存在客户端,而session是在服务端的 这里Session与cookie的样式基本一样的 下面加一个base标签 再次点击,id不变,isNew变为false 30分钟 下面这个设置可以改变session的默认时长 下面我们设置session的时长(上面是默认时长) 本来第二次点击session的创建和获取

    2024年01月24日
    浏览(28)
  • 第十二章 elk

    1、ELK可以帮助我们解决哪些问题 日志分布在多台不同的服务器上,业务一旦出现故障,需要一台台查看日志 单个日志文件巨大,无法使用常用的文本工具分析,检索困难; 2、架构设计分析 Filebeat和Logstash ELK架构中使用 Logstash收集、解析日志 ,但是Logstash对 内存、cpu、io等资

    2024年02月13日
    浏览(22)
  • 第十二章 Transform组件(下)

    上一章节中我们介绍了Transform组件的属性和方法。我们发现 Transform 中有right,up和forward,而 Vector3 类中也有right,up和forward,他们是一回事嘛?我们使用Forward来说明两者之间的区别。我们知道,改变游戏对象的position位置,就可以形成移动效果。如果我们让游戏对象沿着for

    2024年02月01日
    浏览(23)
  • C国演义 [第十二章]

    力扣链接 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 给定一个代表每个房屋存放金额的非负整数数组,计算你

    2024年02月17日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包