• 自学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)  #显示文件的访问格式
    
    • 1
    • 2
    • 3
    • 4

    提示:文件可以不用写文件的后缀名(也可以写)。这种不加绝对路径的用法,python程序和要打开的文件在同一个文件夹下!或者第一句写成:fo = open("E:\python text\英语短语","wb") ”
      执行后会输出:
    在这里插入图片描述

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

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

    fileobject.close();
    
    • 1

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

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

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

    三、使用方法flush()

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

    fileobject.flush();
    
    • 1

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

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

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

    四、使用方法fileno()

      在Python程序中,方法 fileno()的功能是返回一个整型的文件描述符可以用于底层操作系统的I/O操作。使用方法fileno()的语法格式如下所示。

    fileobject.fileno ();
    
    • 1

      方法fileno()没有参数,有返回值,只是返回一个整型文件描述符。例如在下面的实例代码中,演示了使用方法 fileno()返回文件描述符的过程。

    fo = open("暑假学习内容.txt", "wb")      #用wb格式打开指定文件
    print (" 文件名是: ",fo.name)       #显示打开文件的文件名
    fid = fo.fileno()       #返回一个整型的文件描述符
    print (" 文件的描述符是: ",fid)   #显示这个文件的描述符
    fo.close ()     #关闭文件
    
    • 1
    • 2
    • 3
    • 4
    • 5

      在上述代码中,首先使用函数open()以“wb”的方式打开了文件“暑假学习内容.txt”,然后使用方法fileno( )返回这个文件的整型描述符,最后使用方法close( )关闭文件操作,执行后会输出:,
    在这里插入图片描述

    五、使用方法isatty()

      在Python程序中,方法isatty()的功能是检测某文件是否连接到一个终端设备,如果是则返回True,否则返回False。使用方法isatty()的语法格式如下所示。

    fileobject.isatty();
    
    • 1

      方法iatty( )没有参数,有返回值。如果连接到一个终端设备返回True,否则返回False。例如在下面的实例代码中,演示了使用方法isatty()检测文件是否连接到一个终端设备的过程。

    fo = open("暑假学习内容.txt", "wb")
    print (" 文件名是: ",fo. name)  #显示打开文件的文件名
    ret = fo.isatty()       #检测文件是否连接到一个终端设备
    print (" 返回值是:",ret)        #显示连接检测结果
    fo.close()      #关闭文件
    
    • 1
    • 2
    • 3
    • 4
    • 5

      在上述代码中,首先使用函数open( )以“wb"的方式打开了文件“暑假学习内容.txt”,然后使用方法isatty( )检测这个文件是否连接到一个终端设备,最后使用方法close( )关闭文件操作,执行后会输出:
    在这里插入图片描述

    六、使用方法 next()
      在Python程序中,File 对象不支持方法next( )。在Python 3程序中,内置函数next( )通过迭代器调用方法__next__( )返回下一项。在循环中,方法next( )会在每次循环中调用,该方法返回文件的下一行。如果到达结尾(EOF),则触发StopIteration异常。使用方法next( )的语法格式如下所示。

    next (iteratorl[, default])
    
    • 1

      方法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 ()     #关闭文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

      在上述代码中,首先使用函数open( )以“r”的方式打开了文件“暑假学习内容.txt”,然后使用方法next返回文件中的各行内容,最后使用方法 close( )关闭文件操作。文件暑假学习内容.txt 的内容和程序执行后会输出:
    在这里插入图片描述

    七、使用方法 read()

      在Python程序中,要想使用某个文本文件中的数据信息,首先需要将这个文件的内容读取到内存中,既可以一次性读取文件的全部内容,也可以按照每次一行的方式进行读取。其中方法read( )的功能是从目标文件中读取指定的字节数,如果没有给定字节数或为负,则读取所有内容。使用方法read( )的语法格式如下所示。

    file,read([sizel);
    
    • 1

      上述参数“size” 表示从文件中读取的字节数,返回值是从字符串中读取的字节。例如在下面的实例代码中,演示了使用方法read( )读取文件中3个字节内容的过程。

    fo = open("暑假学习内容.txt", "r+")      #用r+格式打开指定文件
    print ("文件名为: ", fo.name)       #显示打开文件的文件名
    line = fo.read (3)      #读取文件中前三个字节的内容
    print ("读取的字符串: %s" %(line))      #显示读取的内容
    fo.close()     #关闭文件
    
    • 1
    • 2
    • 3
    • 4
    • 5

      在上述代码中,首先使用函数open()以“r+”的方式打开了文件“暑假学习内容.txt”,然后使用方法red( )读取了目标文件中前3个字节的内容,最后使用方法close( )关闭文件操作。执行结果如下图:
    在这里插入图片描述

  • 相关阅读:
    Redis进军磁盘存储
    阴影进阶,实现更加的立体的阴影效果!
    SQlserver提权方法
    担忧CentOS停服?KeyarchOS系统来支撑
    Python接口自动化测试实战详解,你想要的全都有
    mysql索引常见问题
    关于基环树找环问题
    【ARM AMBA AXI 入门 13 - AXI 窄位传输 | 非对齐传输| 大小端传输】
    Git中的 fork, clone,branch
    JVM内存和垃圾回收-15.垃圾回收器
  • 原文地址:https://blog.csdn.net/weixin_46066007/article/details/125491090