文件输入与输出之读文件,,


  读文件

  上一节提到,可以使用open()函数打开文件并创建文件对象,这是Python的内置功能之一,要打开文件来完成读,需要使用’r’作为第二个参数,如下:

  与孩子一起学编程-python教程

  如果想打开一个文件完成读,但是这个文件根本不存在,你就会得到一条错误消息。(毕竟,你无法读一个原本没有的东西,对不对?)

  Python还提供了另外一些内置功能,一旦文件打开可以将信息从文件获取到你的程序中,要从一个文件读取文本行,可以使用readlines()方法,如下:

  Lines=my_file.readlines()

  这会读取整个文件,并建立一个列表,每个文本行作为列表中的一项。下面假设notes.txt文件包含一个小列表,上面写的都是你每天要做的事情:

  Wash the car

  Make y bed

  Collect allowance

  我们可以使用“记事本”(Notepad)之类的程序来创建这个文件,其实,你可以现在就动手,使用记事本(或者你喜欢的文本编辑器)来建立这样的文件。可以把它命名为notes.txt,保存在Python程序所在的位置,然后关闭记事本。

  如果用一个小Python程序打开并读取这个文件,代码可能如代码清单22-1所示。

  与孩子一起学编程-python教程与孩子一起学编程-python教程

  输出可能是这样的(取决于你在文件中放入的内容):

  

  与孩子一起学编程-python教程

  这里从文件读取了文本行,并放入一个名为lines的列表中,这个列表中的每一项都是一个字符串,包含从文件读取的一行,注意前两行末尾的部分。这些是分隔文件中各行的换行符,我们创建文件时在这里按下了回车键。如果键入最后一行后按了加车键,那么在第三项后面也会有一个。

  代码清单22-1的程序中还要增加一点,处理完文件时,一定要关闭文件:

  My_file.close()

  嗯,Carter,倘若另一个程序需要使用这个文件,而我们的程序又还没有将它关闭,那个程序就无法访问这个文件了。使用完文件后就关闭它,这样通常会比较好。

  与孩子一起学编程-python教程

  一旦把文件读取为程序中的一个字符串列表,接下来就可以任意处理它了,这个列表与其他Python列表是一样的,所以可以循环处理、排序、追加元素、删除元素等等。这些字符串也像其他字符串一样,可以打印、转换为int或float(如果包含数字的话)、用作GUI中的标签,或者完成能够对字符串做的其他处理。

  一次读取一行

  readlines()方法会读取文件的所有行,直到文件末尾。如果你想一次只读取一行,可以使用readlines()方法,如下:

  first_line=my_file.readline()

  这只会读文件的第一行。如果再在同一个程序中使用readlines(),Python会记住目前在什么位置,所以,第二次使用时,你会得到文件的第二行。代码清单22-2显示了这样的一个例子。

  与孩子一起学编程-python教程

  这个程序的输出是这样的:

  与孩子一起学编程-python教程

  readlines()方法一次只读取一行,所以它不会把结果放入一个列表,每次使用readlines()时,都只是得到一个字符串。

  回到起始位置

  如果已经使用了几次readlines(),现在希望退回到文件的起始位置,可以使用seek()方法,就像这样:

  与孩子一起学编程-python教程

  Seek()方法会让Python找到文件中你指示的位置,括号中的数字就是从文件起始位置算起的字节数,所以如果把它设置为0,就会回到文件的起始位置。

评论关闭