• 【python】文件操作


    目录

    1. open() 打开文件

    2. read()/write() 读写文件

    3. close() 关闭文件

    4. 常用的file对象方法

    5. 常用文件的编码格式(了解)


    python中文件操作使用如下函数/方法:

    • open()函数负责打开文件,并返回文件对象;
    • read/write/close方法通过文件对象来调用从而对文件进行操作。

    1. open() 打开文件

    open()函数是python内置函数,在对文件操作之前需要先使用open()打开文件。如果文件无法被打开,会抛出异常OSError。

    文件被打开后一定要保证关闭文件。

    open()函数语法格式:

    open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closedfd=True,opener=None) 

    参数说明:

    @ file——文件路径,相对路径或绝对路径,必需参数;

    @ mode——文件打开模式,可选参数;

    @ buffering——设置缓冲;

    @ encoding——一般使用utf-8;

    @ errors——报错级别;

    @ newline——区分换行符;

    @ closefd——传入的file参数类型;

    @ opener——设置自定义开启器,开启器的返回值必须下一个打开的文件描述符;

    其中mode文件打开模式的参数有如下,默认为文本模式打开文件。

    模式说明
    t文本模式,默认
    x写模式,新建一个文件,如果该文件存在则会报错
    b二进制模式
    +打开一个文件进行更新,可读可写
    U普通换行模式,不推荐
    r以只读方式打开文件,文件指针将会放在文件开头,默认模式
    rb以二进制格式打开一个文件用于只读,文件指针将会放在开头,一般用于非文本文件如图片等的读取
    r+打卡一个文件用于读写,文件指针将会放在文件开头
    rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头
    w打开一个文件只用于写入,如果该文件已经存在,则打开文件,从文件开头开始编辑,原有内容会被删除。如果文件不存在,创建新文件;
    wb以二进制格式打开文件只用于写入。如果文件已经存在则打开文件,并从头开始编辑,原有内容会被删除;如果文件不存在,创建新文件;
    w+打开一个文件用于读写如果文件已经存在则打开文件,并从头开始编辑,原有内容会被删除;如果文件不存在,创建新文件;
    wb+以二进制格式打开一个文件用于读写。如果文件已经存在则打开文件,并从头开始编辑,原有内容会被删除;如果文件不存在,创建新文件;
    a打开一个文件用于追加,如果文件已经存在,文件指针放在文件结尾,新内容会写在原有内容之后,如果文件不存在,创建新文件进行写入
    a+打开一个文件用于读写,如果该文件已经存在,文件指针将会放在文件的结尾。新的内容会被写入到已有内容之后,如果该文件不存在,创建新文件进行写入
    ab以二进制格式打开一个文件用于追加。如果文件已经存在,文件指针将会放在文件末尾,也就是说,新的内容将会被写入到已有内容之后,如果文件不存在,创建新文件进行写入
    ab+以二进制格式打开一个文件用于追加。如果该文件已经存在,文案金指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写

    2. read()/write() 读写文件

    read()方法从一个打开的文件中读取一个字符串,write()方法可以将任何字符串写入到一个打开的文件中。

    python字符串可以是二进制文件,而不仅仅是文字。

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

    read()/write()语法格式:

    1. fileObject.write(string)
    2. fileObject.read([count])

    参数string表示要写入到已打开文件的内容;返回写入的长度
    参数count表示要从已打开的文件中读取的字节计数,如果没有传入count参数,表示会尽可能多地读取内容,可能直到文件末尾。

    3. close() 关闭文件

    close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件。

    当一个文件对象的引用被重新指定给另一个文件时,python会关闭之前的文件。

    语法格式:

    fileObject.close()

    示例,实现类似拷贝的功能,把一个文件内容复制到另一个文件中。

    1. # 打开要读取的文件
    2. fd = open('1.txt',mode='r')
    3. # 读取文件内容
    4. s = fd.read()
    5. # 关闭文件
    6. fd.close()
    7. # 打开要写入的文件
    8. fd = open('2.txt',mode='w+')
    9. # 写入文件
    10. fd.write(s)
    11. # 关闭文件
    12. fd.close()

    4. 常用的file对象方法

    方法名描述
    file.close()关闭文件
    file.flush()刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件,而不是被动的等待输出缓冲区写入
    file.fileno()返回一个整型的文件描述符,底层操作可以使用该文件描述符
    file.isatty()如果文件连接到一个终端设备返回True,否则返回False。
    file.next()返回文件下一行
    file.read([count])从文件读取指定的字节数,如果未给定或为负则读取所有
    file.readline([count])读取整行,包括'\n'字符
    file.readlines([sizeint])读取所有行并返回列表,若给定sizeint>0,则设置一次读多少字节
    file.seek(offset[, from])设置文件当前位置,from=0表示文件开头作为移动字节的参考位置;from=1表示当前位置作为参考文职;from=2表示文件末尾作为参考位置
    file.tell()返回文件当前位置
    file.truncate([size])截取文件,截取的字节通过size指定,默认为当前文件位置
    file.write(str)将文件写入字符串,返回写入的字符长度
    file.writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则需要自己加入每行的换行符

    5. 常用文件的编码格式(了解)

    文本文件存储的内容是基于字符编码的文案金,常见的编码有ASCII编码,UNICODE编码等

    • python2.x 默认使用ASCII编码格式;
    • python3.x 默认使用UTF-8编码格式;

    ASCII编码:一个ASCII在内存中占用1个字节的空间,计算机中共有256个ASCII字符;

    UTF-8编码:UTF-8是UNICODE编码的一种编码格式;计算机中使用1~6个字节表示一个UTF-8字符,涵盖了地球上几乎所有地区的文字;大多数汉字使用3个字节表示。

    python2.x中使用中文需要在文件的第一行增加以下代码,表示以utf-8编码来处理python文件。

    # *_* coding:utf-8 *_*

    python2.x中,即使制定了文件使用utf-8的编码格式,但是在遍历字符串时,仍然会以字节为单位遍历字符串。

    如果要正确的遍历字符串,在定义字符串时,需要在字符串的引号前,增加一个小写字母u,高速解释器这是一个unicode字符串。

  • 相关阅读:
    智慧公厕蜕变多功能城市智慧驿站公厕的创新
    Redis总结(三)
    手写redux的connect方法, 使用了subscribe获取最新数据
    internship:术语了解及着手写接口
    LeetCode每日一题——2562. Find the Array Concatenation Value
    python ⾯向对象
    YOLOv5项目实战(4)— 简单三步,教你按比例划分数据集
    使用Http Interface客户端解析text/html类型参数
    实验一 将调试集成到vscode
    动态规划篇——DP问题
  • 原文地址:https://blog.csdn.net/sinat_41752325/article/details/126699428