自学Python 37 使用File操作文件

Python 使用File操作文件



  在Python程序中,当使用函数open()打开一个文件后,接下来就可以使用File对象对这个文件进行操作。


一、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") ”
  执行后会输出:
在这里插入图片描述

二、使用 close()方法关闭操作

  在Python程序中,方法close( )用于关闭一个已经打开的文件,关闭后的文件不能再进行读/写操作,否则会触发 ValueError错误。在程序中可以多次调用close()方法,当file对象被引用到操作另外一个文件时,Python 会自动关闭之前的file对象。及时使用方法关闭文件是一个好的编程习惯,使用close()方法的语法格式如下所示。

fileobject.close();

  方法close()没有参数,也没有返回值。例如在下面的实例代码中,演示了使用close()方法关闭文件操作的过程。

fo = open("英语短语","wb")   #用 wb格式打开指定文件
print("文件名为:", fo.name)	#显示打开的文件名
fo.close()      #关闭文件

  在上述代码中,使用函数 open()以“wb"的方式打开“英语短语”。然后使用 close()方法关闭文件操作,执行后会输出:
文件名为:好声音8强名单.txt

三、使用方法flush()

  在Python程序中,方法 flush()的功能是刷新缓冲区,即将缓冲区中的数据立刻写入文件,同时清空缓冲区。在一般情况下,文件关闭后会目动刷新缓冲区,但有时需要关闭之前刷新它,这时就可以使用方法 flush()实现。使用方法 flush()的语法格式如下所示。

fileobject.flush();

  和上一个方法一样,方法flush()既没有参数,也没有返回值。例如在卜面的实例代码中,演示了使用flush()方法刷新缓冲区的过程。

fo = open("暑假学习内容","wb")  #用wb格式打开指定文件
print("文件名为:",fo.name)   #显示打开文件的文件名
fo.flush()      #刷新缓冲区
fo.close()      #关闭文件

  在上述代码中,首先使用函数open()以“wb”的方式打开了文件“暑假学习内容”,然后使用方法 flush()刷新缓冲区,最后使用方法close()关闭文件操作,执行后会输出:
在这里插入图片描述

四、使用方法fileno()

  在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( )关闭文件操作,执行后会输出:,
在这里插入图片描述

五、使用方法isatty()

  在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 的内容和程序执行后会输出:
在这里插入图片描述

七、使用方法 read()

  在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( )关闭文件操作。执行结果如下图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值