第14章 文档的读取与写入
14.1 读取文档
Python处理读取或写入文档时,首先需要将文档打开,然后可以接受一次读取所有文档内容或是逐行读取。
14.1.1 open()
open() 函数可以打开一个文档供读取或写入。如果函数执行成功,将返回文件对象。open()函数的基本使用格式如下:
file_Obj = open(file, mode="r") # 这里只列出最常用的两个参数
-
file:用字符串列出要打开的文档。
-
mode:打开文档的模式,如果省略则代表mode=“r”。使用时如果mode="w"或其它,也可以省略”mode=“,直接写”w“。也可以同时具有多项模式,例如”wb“代表以二进制文档打开供写入,可以是下列基本模式。
下列是第一个字母的操作意义。
- ”r“:以只读方式打开文档供读取。
- ”w“:打开文档供写入。如果文件已存在则打开文件,并覆盖原先的内容。如果文件不存在,则创建新文件。
- “a”:打开文档供写入,如果原先文档有内容,则将新写入数据附加在原先的内容之后。
- ”x“:打开一个新的文档供写入,如果该文件已存在则会报错。
以下是第二个字母的意义,代表文档类型。
- ”b“:二进制模式。
- ”t“:文本模式(默认)。
-
file_Obj:文档对象。print()函数可以将输出导向此对象,不使用时可使用”file_Obj.close()“关闭。使用print()时,默认是将数据输出至屏幕,如果要将数据输出至文档,需要在print()方法中添加参数”file=xxx“,”xxx“是指使用open()方法所返回的文档对象。
程序实例:
# 创建文档对象
fobj = open("out14_1.txt", "w")
print("Hello world", file=fobj) # 将字符串数据输出至文档
# 关闭文档对象
fobj.close()
执行结果:
14.1.2 read()
文档打开后,可以使用read() 读取所打开的文档。使用read()读取时,所有的文档内容将以一个字符串方式被读取,然后存入字符串变量中。打印这个字符串变量就相当于打印整个文档内容。
程序实例:
fileName = "out14_1.txt" # 设置要打开的文档路径
file_Obj = open(fileName) # 使用预设mode=r打开文档,返回调用对象file_obj
data = file_Obj.read() # 读取文档内容到变量data
file_Obj.close() # 关闭文档对象,如果没有关闭可能会损坏文档内容
print(data)
执行结果:
Hello world
14.1.3 with
Python提供一个关键词with,可以在打开文档与创建文档对象时使用,语法如下:
with open(要打开的文档) as 文档对象:
相关系列指令
使用这种方式打开文档,最大的特点是可以不必在程序中关闭文档,with指令会在结束不需要此文档时自动将它关闭。文档经"with open() as 文档对象"打开后会产生一个文档对象,此时使用read()即可读取此文档对象的内容。
程序实例:
fileName = "out14_1.txt" # 设置要打开的文档路径
with open(fileName) as file_Obj:
data = file_Obj.read() # 读取文档内容到变量data
print(data)
执行结果:
Hello world
14.1.4 逐行读取文档内容
若想逐行读取文档内容,可使用下列循环:
for line in file_Obj: # file_Obj为文档对象
程序代码段
程序实例:
fn = 'E:\Python-Files\ch14\out14_2.txt' # 设置要打开的文档
with open(fn) as file_Obj:
for line in file_Obj: # 逐行读取文档内容到变量line
print(line.rstrip()) # 删除末尾的换行符
执行结果:
I'm fine.
Thank you!
And you?
14.1.5 readlines()
使用with关键词配合open()时,所打开的文档对象只能在with段内使用。使用readlines() 可以逐行读取,同时以列表方式存储,读取时每行的换行字符都会存储在列表内。此外还可以在with段外遍历原先文档对象的内容。
程序实例:
fn = 'E:\Python-Files\ch14\out14_2.txt' # 设置要打开的文档
with open(fn) as file_Obj:
obj_list = file_Obj.readlines() # 每次读一行
print(obj_list) # 打印列表
# 逐行输出列表内容
for line in obj_list:
print(line.rstrip())
执行结果:
["I'm fine.\n", 'Thank you!\n', 'And you?']
I'm fine.
Thank you!
And you?
14.2 写入文档
14.2.1 将执行结果写入空文档内
若要写入文档,则要设置写入模式mode=‘w’,“mode”可省略,直接在open()函数内输入‘w’。如果打开文档可以读取或写入,则使用‘r+’。如果文档不存在,open()会创建该文档对象,如果文档已存在,则覆盖原先的内容。
输入到文档可以使用write()方法,语法格式如下:
len = file_Obj.write(data) # file_Obj为文档对象,data为要输出的数据
程序实例:
fileName = 'E:\Python-Files\ch14\out14_3.txt'
str = 'agqtqr132535olksdfkd'
with open(fileName, 'w') as file_Obj:
file_Obj.write(str)
执行结果:
14.2.2 输出多行数据
如果要将多行数据输出到文档,设计程序时需要注意各行之间的换行符号问题,write()不会主动在行的末端加上换行符号。
程序实例:
fileName = 'E:\Python-Files\ch14\out14_3.txt'
str1 = 'Never say never'
str2 = 'Your will, my hands'
with open(fileName, 'w') as file_Obj:
file_Obj.write(str1)
file_Obj.write(str2)
执行结果:
输出至文档时,可添加空格或换行符号,以便获得预期的输出结果。
fileName = 'E:\Python-Files\ch14\out14_3.txt'
str1 = 'Never say never'
str2 = 'Your will, my hands'
with open(fileName, 'w') as file_Obj:
file_Obj.write(str1 + '\n') # 添加换行符号
file_Obj.write(str2 + '\n')
执行结果:
14.2.3 创建附加文档
创建附加文档主要是可以将文档内容输出到所打开的文档末端,当以open()打开时,需增加参数mode=‘a’或直接用’a’。若该文档不存在,则新建文档供写入,若该文档存在,则将新内容追加到原先文档内容之后。
程序实例:
fileName = 'E:\Python-Files\ch14\out14_3.txt'
str1 = 'Being on sea, sail; being on land, settle.'
str2 = 'Birds of a feather flock together.'
with open(fileName, 'a') as file_Obj:
file_Obj.write(str1 + '\n') # 添加换行符号
file_Obj.write(str2 + '\n')
执行结果:
往期文章:
- 《Python零基础快乐学习之旅》学习笔记2——认识变量与基本数学运算
- 《Python零基础快乐学习之旅》学习笔记3——Python的基本数据类型
- 《Python零基础快乐学习之旅》学习笔记4——基本输入与输出
- 《Python零基础快乐学习之旅》学习笔记5——程序的流程控制使用if语句
- 《Python零基础快乐学习之旅》学习笔记6——列表(list)
- 《Python零基础快乐学习之旅》学习笔记7——循环设计
- 《Python零基础快乐学习之旅》学习笔记8——元组(tuple)
- 《Python零基础快乐学习之旅》学习笔记9——字典(dict)
- 《Python零基础快乐学习之旅》学习笔记10——集合(set)
- 《Python零基础快乐学习之旅》学习笔记11——函数设计
- 《Python零基础快乐学习之旅》学习笔记12——类-面向对象
- 《Python零基础快乐学习之旅》学习笔记13——模块的设计与应用