Python基础---文件操作

1.open()函数

函数原型 :open(file, mode=‘r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)

常用的几个参数(其他参数选择默认的即可):

(1)file(文件路径):绝对路径、相对路径

(2)mode(文件操作方式):只读只写、追加、读写、写读…

(3)encodeing(编码方式):GBK、UTF-8……

注:文件操作方式,文件实际操作中使用只读、只写、追加就可以了,如果使用其他混合操作方式如读写和写读,一定要注意文件指针的位置,否则容易导致数据丢失。此外操作完文件要记得用f.close()关闭文件,不然会占用内存而不释放。

2.文件操作方式

2.1 读

  • rrb的区别
    #r 用于读取文本文件
    f = open('log',mode='r',encoding='UTF-8')#模式为r,需要编码方式
    content = f.read()
    print(content)
    f.close()
    
    #rb 用于读取非文本文件,如图片、声音、视频。。
    f = open('log',mode='rb') #模式为rb,不用编码方式
    content = f.read()#读到的内容为16进制的数据
    print(content)
    f.close()
    
  • 探讨最佳读取文件方式

    一次性读:

      #一次性把文件所有内容读取出来,这种方式不推荐使用,因为可能文件太大而导致内存溢出。
      
      #f.read()  
      #有参数f.read(5)  表示读取多个字符,以字符为单位(不区分中英文字符)
      #无参数f.read()   读取所有内容
      f = open('log',mode='r+',encoding='utf-8')
      content = f.read(5) #读5个字符,以字符为单位(一个中文算一个字符)
      print(content)
      f.close()
      
      #f.readlines()  将整个文件内容读取到一个列表,每一行内容做为列表元素
      f = open('log',mode='r+',encoding='utf-8')
      list = f.readlines()
      print(list)
      f.close()
    

    一行一行读:

    #f.readline()  
    #缺点:1.不知道文件的结束   2.有些文件并不是以行来区分的,如图片、视频。
      f = open('log',mode='r+',encoding='utf-8')
      line = f.readline()
      while line:
      	  #end=''为末尾添加一个空字符,这样print函数不会在末尾添加一个换行符
          print(line, end='')
          line = f.readline()
      f.close()
    
    最佳的读取方式:
    #for循环遍历文件句柄,循环将文件内容读取出来
    
    #读取文本文件
    with open('log',mode='r',encoding='utf-8') as f:
        for content in f:
            print(content,end='')
    
    #读取非文本文件
    with open('log.jpg',mode='rb') as f:
        for content in f:
            print(content)
    

    注:关键字with,自动关闭文件

    #使用关键字with,会自动地关闭文件(而不用写f.close()),而且还可以打开多个文件
    with open('log',mode='r+',encoding='utf-8') as f1,\
            open('msg',mode='w+',encoding='utf-8') as f2:
    	content = f.read()
    	print(content,end='')
    
    #注:上面的"\"为续行符
    

2.2写

  • 清空文件内容再写入文件

    #w 用于写入文本文件
    f = open('log',mode='w',encoding='UTF-8')
    str='卡普 路飞 青椒'
    f.write(str)#文件不存在则创建文件,文件存在,先清空文件内容,再将内容写进去。
    f.close()
    
    
    #wb  用于写入非文本文件 如图片、音频、视频
    f = open('log',mode='wb')
    str='卡普 青椒'
    #由于wb模式下没有指定编码,要先将编码为Unicode的str转换为utf-8编码
    f.write(str.encode('UTF-8'))
    f.close()
    
  • 从文件末尾追加

    #a 从文件末尾追加
    f = open('log',mode='a',encoding='UTF-8')
    str='拉布'
    f.write(str)
    f.close()
    
    #ab
    f = open('log',mode='ab')
    str='乌西'
    f.write(str.encode('UTF-8'))
    f.close()
    

2.3.关于文件指针

  • 获取文件指针位置和移动文件指针

      #f.seek()移动文件指针位置,以字节为单位
      #f.tell()获取当前文件指针的位置
      
      f = open('log',mode='r+',encoding='utf-8')
      f.seek(9) #文件指针移动到9的位置
      index = f.tell()#获取当前文件指针的位置
      content = f.read(2)
      print(index,content)
      f.close()
    
  • 截取文件内容

    #f.truncate(9) 将文件长度截取指定的长度
    #注:要根据文件的编码方式选择适当的长度,否则出现截取的内容无法识别。
    f = open('log',mode='r+',encoding='utf-8')
    f.truncate(9)
    content = f.read()
    print(content)
    f.close()
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值