在Python程序中,当使用函数open()打开一个文件后,接下来就可以使用File对象对这个文件进行操作。
在Python程序中,当一个文件被打开后,便可以使用File对象得到这个文件的各种信息。File对象中的属性信息如下表:
属性 | 描述 |
---|---|
file.closed | 返回True如果文件已经被关闭,否则返回False |
file. mode | 返回被打开文件的访问模式 |
file.name | 返回文的名称 |
在Python程序中,对象File是通过内置函数实现对文件操作的,其中常用的内置函数如下表:
函数 | 功能 |
---|---|
file.close( ) | 关闭文件,关闭文件后不能进行读/写操作 |
file.flush( ) | 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件,而不是被动的等待输出缓存 |
file. fileno( ) | 返回一个整型的文件描述符(file descriptor, FD),可以用在如os模块的read方法等一些底层操作上 |
file.isatty( ) | 如果文件连接到一个终端设备返回True,否则返回False |
file.next( ) | 返回文件下一行 |
file.read( [size] ) | 从文件读取指定的字节数,如果未给定或者为负则读取所有 |
file.readline ( [size] ) | 读取整行,包括“\n”字符 |
file.readlines( [hint] ) | 读取所有行并返回列表,若给定hint>0,返回总和大约为hint字节的行,实际读取值可能比hint大,因为需要填充缓冲区 |
file.seek(offset[,]whence ) | 设置文件当前位置 |
file. tell( ) | 返回文件当前位置 |
file.truncate( [size] ) | 截取文件,截取的字节通过size指定,默认为当前文件位置 |
file.write( str ) | 将字符串写入文件,没有返回值 |
file.writelines ( lines ) | 向文件写入一个序列字符串列表,如果需要换行则需要自己加入每行的换行符 |
例如下面的实例代码中,演示了打开一个文件并查看其属性的过程:
fo = open("英语短语","wb") #用wb格式打开指定文件“英语短语”
print("文件名:",fo.name) #显示文件名
print("是否已关闭:",fo.closed) #显示文件是否关闭
print("访问模式:",fo.mode) #显示文件的访问格式
提示:文件可以不用写文件的后缀名(也可以写)。这种不加绝对路径的用法,python程序和要打开的文件在同一个文件夹下!或者第一句写成:fo = open("E:\python text\英语短语","wb") ”
执行后会输出:
在Python程序中,方法close( )用于关闭一个已经打开的文件,关闭后的文件不能再进行读/写操作,否则会触发 ValueError错误。在程序中可以多次调用close()方法,当file对象被引用到操作另外一个文件时,Python 会自动关闭之前的file对象。及时使用方法关闭文件是一个好的编程习惯,使用close()方法的语法格式如下所示。
fileobject.close();
方法close()没有参数,也没有返回值。例如在下面的实例代码中,演示了使用close()方法关闭文件操作的过程。
fo = open("英语短语","wb") #用 wb格式打开指定文件
print("文件名为:", fo.name) #显示打开的文件名
fo.close() #关闭文件
在上述代码中,使用函数 open()以“wb"的方式打开“英语短语”。然后使用 close()方法关闭文件操作,执行后会输出:
在Python程序中,方法 flush()的功能是刷新缓冲区,即将缓冲区中的数据立刻写入文件,同时清空缓冲区。在一般情况下,文件关闭后会目动刷新缓冲区,但有时需要关闭之前刷新它,这时就可以使用方法 flush()实现。使用方法 flush()的语法格式如下所示。
fileobject.flush();
和上一个方法一样,方法flush()既没有参数,也没有返回值。例如在卜面的实例代码中,演示了使用flush()方法刷新缓冲区的过程。
fo = open("暑假学习内容","wb") #用wb格式打开指定文件
print("文件名为:",fo.name) #显示打开文件的文件名
fo.flush() #刷新缓冲区
fo.close() #关闭文件
在上述代码中,首先使用函数open()以“wb”的方式打开了文件“暑假学习内容”,然后使用方法 flush()刷新缓冲区,最后使用方法close()关闭文件操作,执行后会输出:
在Python程序中,方法 fileno()的功能是返回一个整型的文件描述符可以用于底层操作系统的I/O操作。使用方法fileno()的语法格式如下所示。
fileobject.fileno ();
方法fileno()没有参数,有返回值,只是返回一个整型文件描述符。例如在下面的实例代码中,演示了使用方法 fileno()返回文件描述符的过程。
fo = open("暑假学习内容.txt", "wb") #用wb格式打开指定文件
print (" 文件名是: ",fo.name) #显示打开文件的文件名
fid = fo.fileno() #返回一个整型的文件描述符
print (" 文件的描述符是: ",fid) #显示这个文件的描述符
fo.close () #关闭文件
在上述代码中,首先使用函数open()以“wb”的方式打开了文件“暑假学习内容.txt”,然后使用方法fileno( )返回这个文件的整型描述符,最后使用方法close( )关闭文件操作,执行后会输出:,
在Python程序中,方法isatty()的功能是检测某文件是否连接到一个终端设备,如果是则返回True,否则返回False。使用方法isatty()的语法格式如下所示。
fileobject.isatty();
方法iatty( )没有参数,有返回值。如果连接到一个终端设备返回True,否则返回False。例如在下面的实例代码中,演示了使用方法isatty()检测文件是否连接到一个终端设备的过程。
fo = open("暑假学习内容.txt", "wb")
print (" 文件名是: ",fo. name) #显示打开文件的文件名
ret = fo.isatty() #检测文件是否连接到一个终端设备
print (" 返回值是:",ret) #显示连接检测结果
fo.close() #关闭文件
在上述代码中,首先使用函数open( )以“wb"的方式打开了文件“暑假学习内容.txt”,然后使用方法isatty( )检测这个文件是否连接到一个终端设备,最后使用方法close( )关闭文件操作,执行后会输出:
六、使用方法 next()
在Python程序中,File 对象不支持方法next( )。在Python 3程序中,内置函数next( )通过迭代器调用方法__next__( )返回下一项。在循环中,方法next( )会在每次循环中调用,该方法返回文件的下一行。如果到达结尾(EOF),则触发StopIteration异常。使用方法next( )的语法格式如下所示。
next (iteratorl[, default])
方法next( )没有参数,有返回值,返回文件的下一行。例如在下面的实例代两中,演示了使用方法next返回文件各行内容的过程。
fo = open("暑假学习内容.txt", "r") #用r格式打并指定文件
print ("文件名为:",fo. name) #显示打开文件的文件名
for index in range(3):
line = next (fo) #返回文件中的各行内容
print ("第%d行---%s" % (index, line)) #显示3行文件内容
fo.close () #关闭文件
在上述代码中,首先使用函数open( )以“r”的方式打开了文件“暑假学习内容.txt”,然后使用方法next返回文件中的各行内容,最后使用方法 close( )关闭文件操作。文件暑假学习内容.txt 的内容和程序执行后会输出:
在Python程序中,要想使用某个文本文件中的数据信息,首先需要将这个文件的内容读取到内存中,既可以一次性读取文件的全部内容,也可以按照每次一行的方式进行读取。其中方法read( )的功能是从目标文件中读取指定的字节数,如果没有给定字节数或为负,则读取所有内容。使用方法read( )的语法格式如下所示。
file,read([sizel);
上述参数“size” 表示从文件中读取的字节数,返回值是从字符串中读取的字节。例如在下面的实例代码中,演示了使用方法read( )读取文件中3个字节内容的过程。
fo = open("暑假学习内容.txt", "r+") #用r+格式打开指定文件
print ("文件名为: ", fo.name) #显示打开文件的文件名
line = fo.read (3) #读取文件中前三个字节的内容
print ("读取的字符串: %s" %(line)) #显示读取的内容
fo.close() #关闭文件
在上述代码中,首先使用函数open()以“r+”的方式打开了文件“暑假学习内容.txt”,然后使用方法red( )读取了目标文件中前3个字节的内容,最后使用方法close( )关闭文件操作。执行结果如下图: