📜  Python中的文件对象

📅  最后修改于: 2022-05-13 01:54:49.847000             🧑  作者: Mango

Python中的文件对象

文件对象允许我们使用、访问和操作所有用户可访问的文件。可以读取和写入任何此类文件。
当文件操作因 I/O 相关原因而失败时,会引发异常 IOError。这包括由于某种原因未定义操作的情况,例如 tty 设备上的 seek() 或写入打开以供读取的文件。
文件有以下方法:

  • open():以给定的访问模式打开文件。
    open(file_address, access_mode) 

    访问文件的示例: 可以使用名为 open() 的内置函数打开文件。这个函数接受文件的地址和 access_mode 并返回一个文件对象。
    有不同类型的 access_modes:

    r: Opens a file for reading only
    r+: Opens a file for both reading and writing
    w: Opens a file for writing only
    w+: Open a file for writing and reading.
    a: Opens a file for appending
    a+: Opens a file for both appending and reading

    当您将“b”添加到访问模式时,您可以以二进制格式而不是默认文本格式读取文件。当要访问的文件不是文本时使用它。

  • read([size]) :它读取整个文件并以字符串的形式返回它的内容。从文件中读取最多 size 个字节(如果读取在获得 size 个字节之前达到 EOF,则更少)。如果 size 参数为负数或省略,则读取所有数据,直到达到 EOF。
    # Reading a file
    f = open(__file__, 'r')
      
    #read()
    text = f.read(10)
      
    print(text)
    f.close()
    
  • readline([size]) :如果文件只有一行,它会读取文件的第一行,即直到字符或 EOF 并返回一个字符串。如果 size 参数存在且非负数,则它是最大字节数(包括尾随换行符),并且可能会返回不完整的行。仅当立即遇到 EOF 时才返回空字符串。
    # Reading a line in a file
    f = open(__file__, 'r')
      
    #readline()
    text = f.readline(20)
    print(text)
    f.close()
    
  • readlines([sizehint]) :它逐行读取整个文件并将每一行更新为一个返回的列表。使用 readline() 读取直到 EOF 并返回一个包含如此读取的行的列表。如果存在可选的 sizehint 参数,而不是读取到 EOF,而是读取总计大约 sizehint 字节的整行(可能在四舍五入到内部缓冲区大小之后)。
    # Reading a file
    f = open(__file__, 'r')
      
    #readline()
    text = f.readlines(25)
    print(text)
    f.close()
    
  • write(字符串) :将字符串的内容写入文件。它没有返回值。由于缓冲,在调用 flush() 或 close() 方法之前,字符串可能不会真正显示在文件中。
    # Writing a file
    f = open(__file__, 'w')
    line = 'Welcome Geeks\n'
      
    #write()
    f.write(line)
    f.close()
    

    不同模式下的更多示例:

    # Reading and Writing a file
    f = open(__file__, 'r+')
    lines = f.read()
    f.write(lines)
    f.close()
    
    # Writing and Reading a file
    f = open(__file__, 'w+')
    lines = f.read()
    f.write(lines)
    f.close()
    
    # Appending a file
    f = open(__file__, 'a')
    lines = 'Welcome Geeks\n'
    f.write(lines)
    f.close()
    
    # Appending and reading a file
    f = open(__file__, 'a+')
    lines = f.read()
    f.write(lines)
    f.close()
    
  • writelines(sequence) :它是文件的字符串序列,通常是字符串列表或任何其他可迭代的数据类型。它没有返回值。
    # Writing a file
    f = open(__file__, 'a+')
    lines = f.readlines()
      
    #writelines()
    f.writelines(lines)
    f.close()
    
  • tell() :它返回一个整数,以字节的形式告诉我们文件对象从文件开头的位置
    # Telling the file object position
    f = open(__file__, 'r')
    lines = f.read(10)
      
    #tell()
    print(f.tell())
    f.close()
    
  • seek(offset, from_where) :用于改变文件对象的位置。偏移量表示要移动的字节数。 from_where 指示要从哪里移动字节。
    # Setting the file object position
    f = open(__file__, 'r')
    lines = f.read(10)
    print(lines)
      
    #seek()
    print(f.seek(2,2))
    lines = f.read(10)
    print(lines)
    f.close()
    
  • flush() :刷新内部缓冲区,如 stdio 的 fflush()。它没有返回值。 close() 会自动刷新数据,但如果您想在关闭文件之前刷新数据,则可以使用此方法。
    # Clearing the internal buffer before closing the file
    f = open(__file__, 'r')
    lines = f.read(10)
      
    #flush()
    f.flush()
    print(f.read())
    f.close()
    
  • fileno() :返回底层实现用来从操作系统请求 I/O 操作的整数文件描述符。
    # Getting the integer file descriptor
    f = open(__file__, 'r')
      
    #fileno()
    print(f.fileno())
    f.close()
    
  • isatty() :如果文件连接到 tty(-like) 设备,则返回 True,否则返回 False。
    # Checks if file is connected to a tty(-like) device
    f = open(__file__, 'r')
      
    #isatty()
    print(f.isatty())
    f.close()
    
  • next() :当文件用作迭代器时使用。该方法被重复调用。此方法返回下一个输入行或在文件打开以进行读取时在 EOF 处引发 StopIteration(打开以进行写入时的行为未定义)。
    # Iterates over the file
    f = open(__file__, 'r')
      
    #next()
    try:
        while f.next():
            print(f.next())
    except:
        f.close()
    
  • truncate([size]) :截断文件的大小。如果存在可选大小参数,则文件将被截断为(最多)该大小。大小默认为当前位置。当前文件位置没有改变。请注意,如果指定的大小超过了文件的当前大小,则结果取决于平台:可能包括文件可能保持不变、增加到指定的大小,就像用零填充一样,或者增加到指定的大小并带有未定义的新内容。
    # Truncates the file
    f = open(__file__, 'w')
      
    #truncate()
    f.truncate(10)
    f.close()
    
  • close() :用于关闭打开的文件。已关闭的文件无法再读取或写入。
    # Opening and closing a file
    f = open(__file__, 'r')
      
    #close()
    f.close()
    
  • 属性
    • closed :返回一个布尔值,指示文件对象的当前状态。如果文件关闭返回true,打开文件返回false。
    • encoding :此文件使用的编码。将 Unicode字符串写入文件时,它们将使用此编码转换为字节字符串。
    • mode :文件的 I/O 模式。如果文件是使用 open() 内置函数创建的,这将是 mode 参数的值。
    • name :如果文件对象是使用 open() 创建的,则为文件名。
    • newlines :已在通用换行模式下打开的文件对象具有此属性,该属性反映了文件中使用的换行约定。此属性的值是“\r”、“\n”、“\r\n”、None 或包含所有看到的换行符类型的元组。
    • softspace :它是一个布尔值,指示在使用 print 语句时是否需要在另一个值之前打印一个空格字符。
      f = open(__file__, 'a+')
      print(f.closed)
      print(f.encoding)
      print(f.mode)
      print(f.newlines)
      print(f.softspace)
      

相关文章:
在Python中读取和写入文本文件