Python:操作文件

今天,我们来学习Python打开,修改文件的方法。
先在项目文件夹下新建两个文件:text1.txt和text2.txt,在text2中写入“I like Python.(换行)It is fun.(换行)”
下面我们用这两个文件探索操作文件的方法。
如何在Python中打开一个文件对象呢?

with open("text1.txt", 'r', encoding="UTF-8") as t_f:
	pass

with语句即可,并且把这个对象存储到了t_f里。
open有几个常用的参数,我来介绍一下:

  • file 打开的文件名
  • mode 模式
  • encoding 编码格式

模式是什么?
就是打开文件可以执行哪些操作,如a(追加模式),r(阅读模式),w(写入模式),w+(读写模式)。
编码格式可以为UTF-8等编码格式,自己可以衡量一下。当然,我还是建议用UTF-8编码格式,因为它能正确显示中文。

1.阅读模式

1.1 普通读取

# 打开第二个文件 text2.txt
# 模式为r 编码为UTF-8
with open("text2.txt", 'r', encoding="UTF-8") as t_f:
	file_content = t_f.read()
	print(file_content)

应该会输出text2.txt的文件内容。

1.2 分行读取

with open("text2.txt", 'r', encoding="UTF-8") as t_f:
	file_content = t_f.readlines()
	print(file_content)

readlines方法会把每一行文本内容作为一个列表项,由它们组成一个新列表:
[‘I like Python.\n’,‘It is fun.\n’]

也可以使用列表遍历:

with open("text2.txt", 'r', encoding="UTF-8") as t_f:
	file_content = t_f.readlines()
	for i in file_content:
		print(i.rstrip("\n"))

为什么要加rstrip("\n")呢?
因为Python读取文件时,会把换行的地方用特殊字符\n表示,程序输出时看到\n就会换行,所以得去掉\n。

2.追加模式

# 打开第二个文件text2.txt
# 启用a模式
with open("text2.txt", 'a', encoding="UTF-8") as t_f:
	t_f.write("This is a test.\nI like Python very much!\n")

运行代码之后,打开text2.txt会发现多了两行句子。

3.写入模式

注意:在使用此模式时,Python会把目标文件清空,然后让程序输入新的内容!

# 打开第一个文件text1.txt
# 启用w模式
with open("text1.txt", 'a', encoding="UTF-8") as t_f:
	t_f.write("This is a test.\nI like Python very much!\n")

运行之后,打开text1.txt就会发现多了两行文本内容。

追加与写入模式的区别是什么?
追加是把新的内容加在文件文本内容后方,而写入是直接把文件清空,再写入新内容。
注意:各个模式各有各的操作范围,不要在r模式下写入文本,否则会报错,以及其它的也一样。

4.读写模式

在这个模式下,你可以读取或者写入文件,在开始时Python不会把目标文件清空,而是调用写入操作时清空写入新内容。
简单来说,就是阅读模式和写入模式的结合体,我就不再阐述。

5.json文件存储程序数据

json格式是一种特殊的文件格式,可以在程序之间共享一些数据。它也可以存储Python整数,字符串,列表,字典等等数据类型。

5.1 写入json数据

创建一个新程序,输入以下代码:

import json

with open("numbers.json", 'w') as num_f:
	numbers = [1, 2, 3, 4, 5, 6, 7]
	json.dump(numbers, num_f)

运行代码之后,你会发现目录下多了一个json文件,打开它,可以看到之前存储的numbers列表的内容。
我们也用到了一个模块json,指定dump函数在num_f对象内写入numbers列表。

5.2 读取json数据

再创建一个新程序,输入以下代码:

import json

with open("numbers.json", 'r') as num_f:
	numbers = json.load(num_f)
	print(numbers)

在上述代码中,我们使用了json模块的load函数,加载了numbers.json里面的Python数据,并用print打印了出来。

好了,今天的学习就到这儿,感兴趣的可以自己试试json模块的其它操作。

猜你喜欢

转载自blog.csdn.net/wangzirui32/article/details/113066273