• python文件操作


    Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

    使用python的with语句

    实现在处理文件时,无论是否抛出了异常,都能保证with语句执行完毕后关闭已打开的文件

    with open(file, mode='r') as target:

    with-body

     

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

    file: 必需,文件路径(相对或者绝对路径)。

    mode: 可选,文件打开模式

    buffering: 设置缓冲

    encoding: 一般使用utf8

    errors: 报错级别

    newline: 区分换行符

    closefd: 传入的file参数类型

    opener:

    mode模式参数值

     

    以二进制形式打开文件

    使用open函数不仅可以以文本的形式打开文件,而且可以以二进制形式打开非文本文件,如图片、音频、视频文件等

     

    >>> file=open('test.txt','r')

    >>> file

    <_io.TextIOWrapper name='test.txt' mode='r' encoding='cp936'>

     

    >>> file.read()

    '123456789 234567890 345678901'

     

    >>> file1=open('test.jpg','rb')

    >>> file1

    <_io.BufferedReader name='test.jpg'>

    创建的是一个bufferreader对象。该对象生成后,可以再应用其他的第三方模块进行处理。

     

    打开文件时指定编码方式

    open函数打开文件时,默认采用GBK编码,当打开的文件不是GBK编码时,会抛出异常

    通过添加encoding='编码方式'解决

    >>> file = open('utf8.txt','r')

    >>> file.read()

    Traceback (most recent call last):

    File "<pyshell#1>", line 1, in <module>

    file.read()

    UnicodeDecodeError: 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence

    >>> file.close()

    以utf-8编码打开

    >>> file = open('utf8.txt','r',encoding='utf-8')

    >>> print(file.read())

    123

    >>> file.close()

    文件内容的读取

    file.read([size])

    从文件读取指定的字节数,如果未给定或为负则读取所有。

    >>> with open('utf8.txt','r',encoding='utf-8') as f:

        f.read()

    'ufeff123 456 789'

    file.readline([size])

    读取整行,包括 " " 字符。

    >>> with open('utf8.txt','r',encoding='utf-8') as f:

        f.readline()

    'ufeff123 '

    file.readlines([sizeint])

    读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。

    >>> with open('utf8.txt','r',encoding='utf-8') as f:

        f.readlines()    

    ['ufeff123 ', '456 ', '789']

    文件迭代器

    >>> with open('utf8.txt','r',encoding='utf-8') as f:

        for line in f:

            print(line,end='')

    123

    456

    789

    总结

     

    像read(),readlines()这种一次性全部读取的方式在大多数情况下并非良方

    如果是一个大文件,它会占用大量内存,甚至可能会因为内存不足而读取失败。

    但并非必须要选择for line in open('a.txt')的方式,因为有些时候必须加载整个文件才能进行后续的操作,比如要排序文件,必须要拥有文件的所有数据才能进行排序。而且对于小文件来说,一次性读取到一个列表中操作起来可能会更加方便,因为列表对象有很多好用的方法。所以,不能一概而论地选择for line in open('a.txt')。

     

    读取出来的内容,都带行尾的换行符,可以使用字符串的strip()方法去除。

    文件内容的写入

        

    file.write(str)

     

    将字符串写入文件,返回的是写入的字符长度。不会自动加入换行符

    >>> with open('test.txt','w') as f:

        f.write('line1')

        f.write('line2'+' ')

    5

    6

    >>> with open('test.txt','r') as f:

        f.read()

    'line1line2 '

    file.writelines(sequence)

    向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

    >>> data = ['line1','line2','line3']

    >>> with open('test.txt','w') as f:

        f.writelines(data)

    >>> with open('test.txt','r') as f:

        f.read()

    'line1line2line3'

  • 相关阅读:
    iOS UITextField 设置内边距
    营造积极的OKR环境
    管理者的五项基本活动
    如何在团队中让OKR深入人心
    项目管理文化:营造积极氛围的里程碑
    OKR文化:用SMART原则量化目标
    成功落地OKR的要诀
    培养一支有 OKR 思想的管理团队
    如何成为一个成功的会议领导者
    项目管理文化:开展有效的总结会议
  • 原文地址:https://www.cnblogs.com/jeancheng/p/13352040.html
Copyright © 2020-2023  润新知