《Python零基础快乐学习之旅》学习笔记14——文档的读取与写入

第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')

执行结果:
在这里插入图片描述


往期文章:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里逆天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值