读文本文件
打开文件成功后将返回一个文本对象,对文件内容的读取可以通过该对象来实现,该对象有三种方法可以获取文件内容,具体如下所示:
1.read()方法
read()方法可以从文件中读取内容,其语法格式如下:
文件对象.read([size])
该方法表示从文件中读取size个字节或字符作为结果返回,如果省略size,则表示读取所有内容,如下所示。
1 with open('test.txt') as f:
2 str1 = f.read(4) # 读取4个字符
3 str2 = f.read() # 读取剩余所有字符
4 print(str1, str2, sep = '\n')
若test.txt文件内容如下图所示。
程序运行结果如下图所示。
在上例中,使用with-as语句打开test.txt文件,先读取4个字符组成字符串('欢迎大家')并赋给str1,接着再读取剩余的字符串赋给str2。
2.readlines()方法
readlines()方法可以读取文件中的所有行,其语法格式如下:
文件对象.readlines()
该方法将文件中的每行内容作为一个字符串存入列表中并返回该列表,如下所示。
1 with open('test.txt') as f:
2 str = f.readlines() # 读取所有行内容
3 print(str)
运行结果如下图所示。
在上例中,第2行使用readlines()方法读取文件test.txt中每行内容并存入列表中。此处需注意,readlines()方法一次性读取文件中的所有行,如果文件很大,使用readlines()方法就会占用大量的内存空间,读取的过程也较长,因此不建议对大文件使用该方法。
3.readline()方法
readline()方法可以逐行读取文件的内容,其语法格式如下:
文件对象.readline()
该方法将从文件中读取一行内容作为结果返回,如例12-4所示。
1 with open('test.txt') as f:
2 while True:
3 str = f.readline() # 读取一行内容
4 if not str: # 若没读取到内容,则退出循环
5 break
6 print(str, end = '') # 若读取到内容,则打印内容
运行结果如下图所示。
在上例中,通过while循环每次从文件中读取一行,当没读取到内容时,退出循环。
4.in关键字
除了上述几种方法外,还可以通过in关键字读取文件,如下所示。
1 with open('test.txt') as f:
2 for line in f:
3 print(line, end = '')
运行结果如下图所示。
在上例中,通过for循环每次从文件中读取一行,当没读取到内容时,退出循环。
写文本文件
文件中写入内容也是通过文件对象来完成,可以使用write()方法或writelines()方法来实现。
**1\.write()方法**
write()方法可以实现向文件中写入内容,其语法格式如下:
文件对象.write(s)
该方法表示将字符串s写入文件中,如下所示。
1 with open('test.txt', 'w') as f:
2 f.write('简书作者隼与鱼\n')
程序运行结束后,在程序文件所在路径下打开test.txt文件,其内容如下图所示。

在上例中,通过write()方法向test.txt文件中写入'简书作者隼与鱼\n'。注意如果test.txt文件在打开之前存在,则先清空文件内容,再写入'简书作者隼与鱼\n'。
**2\.writelines()方法**
writelines()方法向文件中写入字符串列表,其语法格式如下:
文件对象.writelines(s)
该方法将列表s中的每个字符串元素写入文件中,如下所示。
1 s = ['简书', '作者', '隼与鱼']
2 with open('test.txt', 'w') as f:
3 f.writelines(s)
程序运行结束后,在程序文件所在路径下打开test.txt文件,其内容如下图所示。

在上例中,通过writelines ()方法将列表s中的元素写入test.txt文件,注意写入的字符串之间没有换行。