• python之路07文件处理


    一    操作文件的方法:

    f.read() #读取所有内容,光标移动到文件末尾
    f.readline() #读取一行内容,光标移动到第二行首部
    f.readlines() #读取每一行内容,存放于列表中
    
    f.write('1111
    222
    ') #针对文本模式的写,需要自己写换行符
    f.write('1111
    222
    '.encode('utf-8')) #针对b模式的写,需要自己写换行符
    f.writelines(['333
    ','444
    ']) #文件模式
    f.writelines([bytes('333
    ',encoding='utf-8'),'444
    '.encode('utf-8')]) #b模式
    
    #了解
    f.readable() #文件是否可读
    f.writable() #文件是否可读
    f.closed #文件是否关闭
    f.encoding #如果文件打开模式为b,则没有该属性
    f.flush() #立刻将文件内容从内存刷到硬盘
    以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
     
     对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)

    二 文件内光标移动

    一: read(3):

      1. 文件打开方式为文本模式时,代表读取3个字符

      2. 文件打开方式为b模式时,代表读取3个字节

    二: 其余的文件内光标移动都是以字节为单位如seek,tell,truncate

    注意:

      1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

      2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果


    三 文件的另一种打开模式‘b’模式
    1 那么b模式是与t模式有相似的地方,就是他们都不能单独使用,必须跟r,w,a。一起用在一起。
    2 b模式下的一个特殊点既是读写都以bytes为单位的。
    3 b模式下不能再指定encoding参数了。
    那么下面我们来用实例介绍他的几种用法:
    ‘rb’
    with open('1.jpg',mode='rb')as f:
        data=f.read()
        print(data)
        print(type(data))
    
    
    with open('a,txt',mode='rb')as f:
       data=f.read
       print(data.decode('utf-8'))
       prirnt(type(data))
    首先我们可以看出,rb模式下,我们可以读文本文件也可以读视频,图片文件。
    但是在进行文本文件的读取时,我们进行解码,因为在rb模式下读写都以bytes为单位,所以如果我们不进行解码就会报错。
    ‘rw’
    在‘wb’模式下
    with open('b,txt',mode='wb')as f:
         msg='哈喽‘
         f.write(msg.encode('gbk))
    
    
        with open('b,txt',mode='wb')as f:
         msg='哈喽‘
         f.write(msg.encode('utf-8'))
    同样的我们在进行wb的时候,我们也要将中文字符编码成bytes类型可以使用(’gbk‘)或者(’utf-8‘)

      ’ab‘

    在’ab‘模式下
    
    with open('b,txt',mode='ab')
         f.write('你好'.encode('utf-8'))
      或者
         f.write('你好'.encode('gbk'))

    四   文件复制

    文件复制的原理就是按照原文件再创建一个新的文件,将原文件的内容一行一行的读出来然后写入新创建的文件。

    文件copy
    
    import sys
    
    l=sys.argv#把命令行中的解释器后空格分隔后的所有参数都存成列表,例如:你输入23 3 2 3 
    那么出来的方式则是:[’23‘,’3‘,’2‘,’3‘]
    print(l) src_file_path=l[1] dst_file_path=l[2] print(src_file_path) print(dst_file_path) with open(r'%s''%src_file_path,mode='rb')as f1, open(r'%s'%dst_file_path,mode='wb')as f2: for line in f1: f2.write(line)

    五    文件修改的两种方式

        第一种:

                    1 先把文件内容全部读入内存。

                     2 然后在内存中的进行文件的修改。

                     3  最后将修改后的内容写入原文件,那么在这个过程实际上是一个对于原文件的更新。

              

        with open('user,txt',mode='r',encoding='utf-8')as f:
    data=data.read()#将读取的文件内容付给data
    data=data.repalce('你好','你好[哈哈哈]')#将文件中的’你好‘换成’你好[哈哈哈]‘ with open(’user,txt‘,mode='w',encoding='utf-8')as f: f.write(data) #将修改后的内容再传进去原文件,实现对于原文件的覆盖。

       第二种

               1 先对于原文件进行读取操作。

                2 再通过文件的w实现创建一个新的文件,

                3 然后对原文件进行逐行查找,将找到的需要修改的地方进行修改运用replace,然后写入新的文件

                4 最后删除os.remove(原文件),修改新文件 os.rename().将文件名改为与原文件相同

                       

    import sys
    impot os with open(’user,txt‘,mode
    ='rt',encoding='utf-8')as f1, open('user,txt,swap',mode='wt',encoding='utf-8')as f2: for line in f1: if '你好'in line: line=line.replace('你好',’你好[哈哈哈]‘) f2.write(line) os.remove('user,txt') os.rename('user,txt,swap','user,txt')





    六 函数

    函数的定义:用来实现某种功能的工具。我们要想使用函数,必须先定义函数

    函数分类:内置函数和自定义函数
    1、内置函数
    为了方便我们的开发,针对一些简单的功能,python解释器已经为我们定义好了的函数即内置函数。对于内置函数,我们可以拿来就用而无需事先定义,如len(),sum(),max()
    ps:我们将会在最后详细介绍常用的内置函数。
    
    2、自定义函数
    很明显内置函数所能提供的功能是有限的,这就需要我们自己根据需求,事先定制好我们自己的函数来实现某种功能,以后,在遇到应用场景时,调用自定义的函数即可。




  • 相关阅读:
    设计模式-代理模式
    设计模式-策略模式
    设计模式-单例模式
    优先队列
    n!中质因子个数
    计算组合数
    高精度
    memset用法
    质因子分解
    素数筛法
  • 原文地址:https://www.cnblogs.com/zhangsanfeng/p/8627667.html
Copyright © 2020-2023  润新知