在Python 中,读写文件有3个步骤:
- 调用File对象的read()或write()方法。
- 调用File对象的close()方法,关闭该文件。
open()函数
要用open()函数打开一个文件,就要向它传递一个字符串路径,表明希望打开的文件。这既可以是绝对路径,也可以是相对路径。open()函数返回一个File对象。
#代码 helloFile = open('C:\\Users\\your_home_folder\\hello.txt')
请确保用你自己的计算机文件路径替代括号内的路径。
在Python 中打开文件时,读模式是默认的模式。但如果你不希望依赖于Python的默认值,也可以明确指明该模式,向 open()传入字符串'r',作为第二个参数。以open('/Users/your_home_folder/hello.txt', 'r')和 open('/Users/your_home_folder/hello.txt')做的事情一样。
调用open()将返回一个 File 对象。File 对象代表计算机中的一个文件,它只是 Python 中另一种类型的值,就像你已熟悉的列表和字典。在前面的例子中,你将File 对象保存在 helloFile 变量中。现在,当你需要读取或写入该文件,就可以调用 helloFile 变量中的 File 对象的方法。
read()读取文件
#代码helloContent = helloFile.read()print(helloContent)#运行输出结果:'Hello world!'
read()函数返回的是文件内所有内容为一个字符串,如果想一行一行读取,可以使用readlines()方法,从该文件取得一个字符串的列表。列表中的每个字符串就是文本中的每一行。
#例如hello.txt中的内容如下:hellohellohello
#代码Filecontent = open('hello.txt')lines=sonnetFile.readlines() print(lines)#运行输出结果:['hello,\n','hello,\n','hello'],请注意,每个字符串值都以一个换行字符\n结束。除了文件的最后一行。与单#个大字符串相比,字符串的列表通常更容易处理。#此时想一行一行输出,则可以这样写for line in lines: print(line)#运行输出结果如下:
write()写入文件
Python 允许你将内容写入文件,方式与print()函数将字符串“写”到屏幕上类 似。但是,如果打开文件时用读模式,就不能写入文件。你需要以“写入纯文本模式”或“添加纯文本模式”打开该文件,或简称为“写模式”和“添加模式”。
写模式将覆写原有的文件,从头开始,就像你用一个新值覆写一个变量的值。将'w'作为第二个参数传递给open(),以写模式打开该文件。
不同的是,添加模式将在已有文件的末尾添加文本。你可以认为这类似向一个变量中的列表添加内容,而不是完全覆写该变量。将'a'作为第二个参数传递给open(),以添加模式打开该文件。
如果传递给open()的文件名不存在,写模式和添加模式都会创建一个新的空文件。在读取或写入文件后,调用close()方法,然后才能再次打开该文件。
baconFile = open('bacon.txt', 'w')baconFile.write('Hello world!\n') #运行输出结果:13baconFile.close()baconFile = open('bacon.txt', 'a')baconFile.write('Bacon is not a vegetable.')#运行输出结果:25baconFile.close()baconFile = open('bacon.txt') content = baconFile.read()baconFile.close() print(content)#运行输出结果:Hello world! #运行输出结果:Bacon is not a vegetable.
以写模式打开bacon.txt。因为还没有bacon.txt,Python就创建了一 个。在打开的文件上调用write(),并向write()传入字符串参数'Hello world! \n',将字符串写入文件,并返回写入的字符个数,包括换行符。然后关闭该文件。为了将文本添加到文件已有的内容,而不是取代我们刚刚写入的字符串,就以添加模式打开该文件。向该文件写入'Bacon is not a vegetable.',并关闭它。最后为了将文件的内容打印到屏幕上,以默认的读模式打开该文件,调用 read(),将得到的内容保存在content中,关闭该文件,并打印content。
请注意,write()方法不会像 print()函数那样,在字符串的末尾自动添加换行字符,必须自己添加该字符。
更多往期内容在公众号中,你的关注是我持续更新的动力,奥里给!一起加油学习!