文件输入与输出之读文件,,
文件输入与输出之读文件,,
读文件
上一节提到,可以使用open()函数打开文件并创建文件对象,这是Python的内置功能之一,要打开文件来完成读,需要使用’r’作为第二个参数,如下:
如果想打开一个文件完成读,但是这个文件根本不存在,你就会得到一条错误消息。(毕竟,你无法读一个原本没有的东西,对不对?)
Python还提供了另外一些内置功能,一旦文件打开可以将信息从文件获取到你的程序中,要从一个文件读取文本行,可以使用readlines()方法,如下:
Lines=my_file.readlines()
这会读取整个文件,并建立一个列表,每个文本行作为列表中的一项。下面假设notes.txt文件包含一个小列表,上面写的都是你每天要做的事情:
Wash the car
Make y bed
Collect allowance
我们可以使用“记事本”(Notepad)之类的程序来创建这个文件,其实,你可以现在就动手,使用记事本(或者你喜欢的文本编辑器)来建立这样的文件。可以把它命名为notes.txt,保存在Python程序所在的位置,然后关闭记事本。
如果用一个小Python程序打开并读取这个文件,代码可能如代码清单22-1所示。
输出可能是这样的(取决于你在文件中放入的内容):
这里从文件读取了文本行,并放入一个名为lines的列表中,这个列表中的每一项都是一个字符串,包含从文件读取的一行,注意前两行末尾的部分。这些是分隔文件中各行的换行符,我们创建文件时在这里按下了回车键。如果键入最后一行后按了加车键,那么在第三项后面也会有一个。
代码清单22-1的程序中还要增加一点,处理完文件时,一定要关闭文件:
My_file.close()
嗯,Carter,倘若另一个程序需要使用这个文件,而我们的程序又还没有将它关闭,那个程序就无法访问这个文件了。使用完文件后就关闭它,这样通常会比较好。
一旦把文件读取为程序中的一个字符串列表,接下来就可以任意处理它了,这个列表与其他Python列表是一样的,所以可以循环处理、排序、追加元素、删除元素等等。这些字符串也像其他字符串一样,可以打印、转换为int或float(如果包含数字的话)、用作GUI中的标签,或者完成能够对字符串做的其他处理。
一次读取一行
readlines()方法会读取文件的所有行,直到文件末尾。如果你想一次只读取一行,可以使用readlines()方法,如下:
first_line=my_file.readline()
这只会读文件的第一行。如果再在同一个程序中使用readlines(),Python会记住目前在什么位置,所以,第二次使用时,你会得到文件的第二行。代码清单22-2显示了这样的一个例子。
这个程序的输出是这样的:
readlines()方法一次只读取一行,所以它不会把结果放入一个列表,每次使用readlines()时,都只是得到一个字符串。
回到起始位置
如果已经使用了几次readlines(),现在希望退回到文件的起始位置,可以使用seek()方法,就像这样:
Seek()方法会让Python找到文件中你指示的位置,括号中的数字就是从文件起始位置算起的字节数,所以如果把它设置为0,就会回到文件的起始位置。
评论关闭