• python 文件操作


    按文件中数据的组织形式把文件分为文本文件二进制文件两类。

    文本文件:文本文件存储的是常规字符串,由若干文本行组成,通常每行以换行符'\n'结尾。常规字符串是指记事本或其他文本编辑器能正常显示、编辑并且人类能够直接阅读和理解的字符串,如英文字母、汉字、数字字符串。文本文件可以使用字处理软件如gedit、记事本进行编辑。

    二进制文件:二进制文件把对象内容以字节串(bytes)进行存储,无法用记事本或其他普通字处理软件直接进行编辑,通常也无法被人类直接阅读和理解,需要使用专门的软件进行解码后读取、显示、修改或执行。常见的如图形图像文件、音视频文件、可执行文件、资源文件、各种数据库文件、各类office文档等都属于二进制文件 

    文件基本操作

    文件内容操作三步走:打开、读写、关闭

    1. open(file, mode='r', buffering=-1, encoding=None, errors=None,
    2. newline=None, closefd=True, opener=None)
    3. file参数指定了被打开的文件名称。
    4. mode参数指定了打开文件后的处理方式。
    5. buffering参数指定了读写文件的缓存模式。0表示不缓存,1表示缓存,如大于1则表示缓冲区的大小。默认值-1表示由系统管理缓存。
    6. encoding参数指定对文本进行编码和解码的方式,只适用于文本模式,可以使用Python支持的任何格式,如GBK、utf8、CP936等等。

    如果执行正常,open()函数返回1个文件对象,通过该文件对象可以对文件进行读写操作。

    如果指定文件不存在、访问权限不够、磁盘空间不足或其他原因导致创建文件对象失败则抛出异常。

    1. f1 = open('file1.txt', 'r') # 以读模式打开文件
    2. f2 = open('file2.txt', 'w') # 以写模式打开文件

    当对文件内容操作完以后,一定要关闭文件对象,这样才能保证所做的任何修改都确实被保存到文件中。

    f1.close()
    

    但是,即使写了关闭文件的代码,也无法保证文件一定能够正常关闭。例如,如果在打开文件之后和关闭文件之前发生了错误导致程序崩溃,这时文件就无法正常关闭。在管理文件对象时推荐使用with关键字,可以有效地避免这个问题。

    1. with open(filename, mode, encoding) as fp:
    2. #这里写通过文件对象fp读写文件内容的语句

    上下文管理语句with还支持下面的用法: 

    1. with open('test.txt', 'r') as src, open('test_new.txt', 'w') as dst:
    2. dst.write(src.read())

    文件打开方式:

    模式

    说明

    r

    读模式(默认模式,可省略),如果文件不存在则抛出异常

    w

    写模式,如果文件已存在,先清空原有内容

    x

    写模式,创建新文件,如果文件已存在则抛出异常

    a

    追加模式,不覆盖文件中原有内容

    b

    二进制模式(可与其他模式组合使用)

    t

    文本模式(默认模式,可省略)

    +

    读、写模式(可与其他模式组合使用)

    文件对象常用属性

    属性

    说明

    buffer

    返回当前文件的缓冲区对象

    closed

    判断文件是否关闭,若文件已关闭则返回True

    fileno

    文件号,一般不需要太关心这个数字

    mode

    返回文件的打开模式

    name

    返回文件的名称

    1. 7-1 向文本文件中写入内容,然后再读出。
    2. s = 'Hello world\n文本文件的读取方法\n文本文件的写入方法\n'
    3. with open('sample.txt', 'w') as fp: #默认使用cp936编码
    4. fp.write(s)
    5. with open('sample.txt') as fp: #默认使用cp936编码
    6. print(fp.read())
    1. 7-3 读取并显示文本文件所有行。
    2. with open('sample.txt') as fp: #假设文件采用CP936编码
    3. for line in fp: #文件对象可以直接迭代
    4. print(line)

     

  • 相关阅读:
    零日漏洞预防
    c语言进制的转换10进制转换16进制
    高校部署房产管理系统可实现那些目标?
    【文献阅读】【NC 2023】基于分子组装的可解释深度学习方法实现精准逆合成预测以及路径规划
    Aspose.Words使用教程之如何操作主题属性
    OpenGait:首个步态识别框架开源了!
    磁盘的工作方式
    字面量和变量
    小程序-全局数据共享
    TS中的枚举是什么如何使用
  • 原文地址:https://blog.csdn.net/m0_62309595/article/details/126026098