• python3基础笔记(四)文件处理


    一、文件处理

    1.打开文件。

    必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。

    语法:

    file object = open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
    

      

    各个参数的细节如下:

    • file:file变量是一个包含了你要访问的文件名称的字符串值。
    • mode:mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
    • buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
    • encoding:以何种编码打开该文件,默认编码与操作系统有关。  带b的模式不能指定encoding
    • errors:取值一般有strict(默认),ignore,当取strict的时候,字符编码出现问题的时候,会报错,当取ignore的时候,编码出现问题,程序会忽略而过,继续执行下面的程序。
    • newline:可以取的值有None, , , ”, ‘ ',用于区分换行符,但是这个参数只对文本模式有效;
    • closefd:是与传入的文件参数有关,默认情况下为True,传入的file参数为文件的文件名,取值为False的时候,file只能是文件描述符,什么是文件描述符,就是一个非负整数,在Unix内核的系统中,打开一个文件,便会返回一个文件描述符。

    不同模式打开文件的完全列表:

    模式描述
    r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
    r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
    rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
    w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
    w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

    下图总结了这几种模式:

    模式rr+ww+aa+
       
     
    创建    
    覆盖        
    指针在开始    
    指针在结尾        

    File对象的属性

    一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。

    以下是和file对象相关的所有属性的列表:

    属性描述
    file.closed 返回true如果文件已被关闭,否则返回false。
    file.mode 返回被打开文件的访问模式。
    file.name 返回文件的名称。
    file.encoding 返回打开文件时的编码

    如下实例:

    f = open("test.txt", "w")
    print("文件名: ", f.name)
    print("是否已关闭 : ", f.closed)
    print("访问模式 : ", f.mode)
    print("文件编码: ", f.encoding) # 打开文件时候不指定默认与操作系统有关
    

      输出:

    文件名:  test.txt
    是否已关闭 :  False
    访问模式 :  w
    文件编码:  cp936
    
    

    close()方法

    File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。

    当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。

    语法:

    file.close()

    例子:

    # 打开一个文件
    f = open("test.txt", "w")
    print("文件名: ", f.name)
    print("是否已关闭 : ", f.closed)
    print("访问模式 : ", f.mode)
    print("文件编码: ", f.encoding) # 打开文件时候不指定默认与操作系统有关
    f.close()   # 关闭文件
    print("是否已关闭 : ", f.closed)
    

      输出:

    文件名:  test.txt
    是否已关闭 :  False
    访问模式 :  w
    文件编码:  cp936
    是否已关闭 :  True
    
    

    读写文件:

    write()方法

    write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

    write()方法不会在字符串的结尾添加换行符(' '):

    write方法写入文件后返回写入文件的字节数

    语法:

    file.write(string)

    在这里,被传递的参数是要写入到已打开文件的内容。

    例子:

    # 打开一个文件
    f = open("test.txt", "w")
    size = f.write("hello world
    ")    # 把字符串写入到文件
    # 关闭打开的文件
    print(size)     # 此处输出 12
    f.close()
    

      

      此是会创建一个名为test.txt的文件打开test.txt即可看到写入的内容

    read()方法

    read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

    read()方法读的是字符 file的其他所有方法都是读的字节

    语法:

    file.read([count])

    在这里,被传递的参数是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。

    例子:

    这里我们用到以上创建的 test.txt 文件。

    # 打开一个文件
    f = open("test.txt", "r+")
    str = f.read(5)
    print(str)
    str = f.read(5)
    print(str)
    # 关闭打开的文件
    f.close()
    

      输出:

    hello
     worl

    flush()方法:

      将写入的结果立即写入到文件。

    语法:

    file.flush()
    

      

     truncate()方法:

      文件的截取,属于写方式。但不能使用w+模式(w+模式会把文件内容清空)

    语法:

    file.truncate(count)
    

      count为截取的文件字节数

      例如:

    f = open("test.txt", "r+")
    f.truncate(3)   # 截取文件前三个字符   
    f.close()      
    

      此时打开test.txt会看到:

    hel

      

    文件定位

    tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。

    seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。

    如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

    seek 与 tell  都是按字节读。

    例子:

    就用我们上面创建的文件test.txt。

    # 打开一个文件
    f = open("test.txt", "r+")
    str = f.read(5)
    print(str)
    # 查找当前位置
    position = f.tell()
    print("当前文件位置 : ", position)
    # 把指针再次重新定位到文件开头
    position = f.seek(0, 0)
    str = f.read(10)
    print(str)
    # 关闭打开的文件
    f.close()
    

      输出:

    hello
    当前文件位置 :  5
    hello worl
    
    
  • 相关阅读:
    mysql BETWEEN操作符 语法
    mysql IN操作符 语法
    mysql LIKE通配符 语法
    mysql TOP语句 语法
    mysql DELETE语句 语法
    mysql Update语句 语法
    mysql INSERT语句 语法
    mysql ORDER BY语句 语法
    mysql OR运算符 语法
    mysql AND运算符 语法
  • 原文地址:https://www.cnblogs.com/zbuter/p/8722269.html
Copyright © 2020-2023  润新知