【人生苦短,我学 Python】进阶篇——文件处理(Day15)

举报
AI 菌 发表于 2021/08/04 22:28:59 2021/08/04
【摘要】 写在前面:大家好!我是【AI 菌】,一枚爱弹吉他的程序员。我热爱AI、热爱分享、热爱开源! 这博客是我对学习的一点总结与记录。如果您也对 深度学习、机器视觉、算法、Python、C++ 感兴趣,可以关注我的动态,我们一起学习,一起进步~ 我的博客地址为:【AI 菌】的博客 我的Github项目地址是:【AI 菌】的Github -> 前往【人生苦短,我...

写在前面:大家好!我是【AI 菌】,一枚爱弹吉他的程序员。我热爱AI、热爱分享、热爱开源! 这博客是我对学习的一点总结与记录。如果您也对 深度学习、机器视觉、算法、Python、C++ 感兴趣,可以关注我的动态,我们一起学习,一起进步~
我的博客地址为:【AI 菌】的博客
我的Github项目地址是:【AI 菌】的Github

-> 前往【人生苦短,我学 Python】总目录 <-

一、读写文件

1.1 读txt文件

(1) 读取文件中的全部内容

# 打开example.txt文件,并返回文件对象file
with open('example.txt') as file: # 通过read()读取文件的全部内容,并将其作为一个字符串存储在all_contents中 all_contents = file.read() # 显示全部内容 print(all_contents)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

执行该程序后,输出example.txt文件中的全部内容:

君不见黄河之水天上来,奔流到海不复回。
君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。

  
 
  • 1
  • 2
  • 3
  • 4

(2) 逐行读取文件中的内容

with open('example.txt') as file: # 遍历文件中的每一行 for line in file: print(line)

  
 
  • 1
  • 2
  • 3
  • 4

执行该程序后,逐行输出example.txt文件中的每一行内容:

君不见黄河之水天上来,奔流到海不复回。

君不见高堂明镜悲白发,朝如青丝暮成雪。

人生得意须尽欢,莫使金樽空对月。

天生我材必有用,千金散尽还复来。

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

容易发现,输出每一行内容后,都多了一个空行。 这是因为每行的末尾都有一个看不见的换行符,而 print 语句也会加上一个换行符,因此每行末尾都有两个换行符:一个来自文件,另一个来自 print 语句。要消除这些多余的空白行,可在 print 语句中使用 rstrip()

print(line.rstrip())

  
 
  • 1

(3) 创建一个包含文件各行内容的列表

使用关键字 with 时, open() 返回的文件对象只在 with 代码块内可用。如果要在 with 代码块外访问文件的内容,可在 with 代码块内将文件的各行存储在一个列表中,并在 with 代码块外使用该列表:你可以立即处理文件的各个部分,也可推迟到程序后面再处理。

下面的示例在 with 结构中将文件 example.txt 的各行存储在一个列表中,再在 with 代码块外打印它们:

with open("example.txt") as file: # 从文件中读取每一行,并将其存储在一个列表lines中 lines = file.readlines()
# 逐行打印内容
for line in lines: print(line.rstrip())

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

执行该程序后,逐行输出example.txt文件中的每一行内容:

君不见黄河之水天上来,奔流到海不复回。
君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。

  
 
  • 1
  • 2
  • 3
  • 4

1.2 写txt文件

(1) 写入空文件

在前面的示例中,我们使用的open()其实包含两个参数:

  • 第一个参数filename。表示到打开或者写入的文件名;
  • 第二个参数mode。模式有三种选择:读取模式(‘r’)、写入模式(‘w’)、附加模式(‘a’)。如果你省略了模式实参, Python 将以默认的只读模式打开文件。

要将文本写入文件,你在调用 open() 时需要提供另一个实参——写入模式(‘w’),告诉 Python 你要写入打开的文件。为明白其中的工作原理,我们来将一条简单的消息存储到文件中:

# 以写入模式打开文件
with open("writeFile.txt", "w") as file: # write()将一个字符串写入文件 file.write("I Love Python!")

  
 
  • 1
  • 2
  • 3
  • 4

执行后,可以发现在你的工程目录下产生了一个新的文件writeFile.txt,该文件中的内容是:I Love Python!

注意:Python 只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数 str() 将其转换为字符串格式。

(2) 写入多行

函数 write() 不会在你写入的文本末尾添加换行符,因此你可以在写入时指定换行符:

# 以写入模式打开文件
with open("writeFile.txt", "w") as file: # write()将一个字符串写入文件,并换行 file.write("I Love Python!\n") file.write("AI Jun Love Python too!\n")

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

执行后,可以发现生成的新文件writeFile.txt中有两行内容:

I Love Python!
AI Jun Love Python too!

  
 
  • 1
  • 2

注意:如果在工程目录下已有writeFile.txt文件,则新写入的内容会覆盖原来的所有内容。

(3) 文件添加新内容

如果你要给文件添加内容,而不是覆盖原有的内容,可以 附加模式 打开文件。你以附加模式打开文件时, Python 不会在返回文件对象前清空文件,而你写入到文件的行都将添加到文件末尾。如果指定的文件不存在, Python 将为你创建一个空文件。

接下来,在既有文件 writeFile.txt 中再添加一些新的内容:

with open("writeFile.txt", "a") as file: # 在原来writeFile.txt文件中新添内容 file.write("I Love Python beacause it can work well!")

  
 
  • 1
  • 2
  • 3

执行后,在原内容中新增了一行:

I Love Python!
AI Jun Love Python too!
I Love Python beacause it can work well!

  
 
  • 1
  • 2
  • 3

二、存储数据

模块 json 让你能够将简单的 Python 数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。你还可以使用 json 在 Python 程序之间分享数据。更重要的是, JSON 数据格式并非 Python 专用的,这让你能够将以 JSON 格式存储的数据与使用其他编程语言的人分享。这是一种轻便格式,很有用,也易于学习。

JSON ( JavaScript Object Notation )格式最初是为 JavaScript 开发的,但随后成了一种常见格式,被包括 Python 在内的众多语言采用。

2.1 写入json文件

使用 json.dump() 将数据存储到JSON文件中:

# 导入模块 json
import json
# 新建一个列表
numbers = [1,2,3,4,5]
# 以写入模式打开这个文件new.json
with open("new.json", "w") as file: # 使用json.dump()将数字列表存储到文件中 json.dump(numbers, file)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

执行后,在工程目录下生成一个新的文件new.json,文件中存储着新添的数据:[1, 2, 3, 4, 5]

注:json是Python中的内置模块,在编写相关程序时,可以直接使用import导入,不需要额外的安装json库。

2.2 向json文件中添加内容

以写入模式打开文件,写入的内容会覆盖原来文件中的内容。有时希望在源文件中添加新的内容,这时就必须以附加模式打开文件,如下所示:

# 导入模块 json
import json
# 新建一个列表
list = [6, 7, 8, 9, 10]
# 以附加模式打开这个文件new.json
with open("new.json", "a") as file: # 使用json.dump()将数字列表存储到文件中 json.dump(list, file)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

执行完后,程序在原来的new.json文件中新添了内容:[6, 7, 8, 9, 10]

2.3 读取json文件

接下来,使用函数 json.load() 将JSON文件中的列表读取到内存中:

# 导入模块 json
import json

# 以只读模式打开这个文件new.json
with open("new.json", "r") as file: # 使用json.load()将JSON文件中的内容读取到内存 list = json.load(file)

print("JSON文件中存储的内容是:", list)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

运行结果:

JSON文件中存储的内容是: [1, 2, 3, 4, 5]

  
 
  • 1

-> 回到【人生苦短,我学 Python】总目录 <-

在这里插入图片描述
由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!

文章来源: ai-wx.blog.csdn.net,作者:AI 菌,版权归原作者所有,如需转载,请联系作者。

原文链接:ai-wx.blog.csdn.net/article/details/113874056

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。