文件操作 08

文件操作

一 , 文件的内部内容进行操作

  1.open('文件路径',mode='模式(默认是只读)',encoding='编码')

      路径必须写上后缀(.txt等)

      f = open('d:/小护士.txt',mode='r',encoding='utf-8')

      content = f.readlines()

      line1 = f.readline().strip() # 空白, 空格,\t, \n

      print(line1)

        读r 只能读 不能写

      1.open('文件路径',mode='模式(默认是只读)',encoding='编码')

        路径必须写上后缀(.txt等)

        f = open('d:/小护士.txt',mode='r',encoding='utf-8')

        content = f.readlines()

        line1 = f.readline().strip() # 空白, 空格,\t, \n

        print(line1)

        f.close

      f 是一个可迭代对象

      f = open('d:/周润发大战奥特曼.txt',mode='r',encoding='utf-8' )

      for line in f : # 内部其实调用的是readline()

        print(line)

      f.close() # 一定记得写上

  写w 只能写 不能读

      f = open('d:/sylar.txt',mode='w',encoding='utf-8')

      f.write('周笔畅\n')

      f.write('胡辣汤\n')

      f.write('实付款\n')

      f.flush()

      f.close()

      f.write() # 先清空 再写入

      追加a 追加写 只能写入

        f = open('d:/sylar.txt',mode='a',encoding='utf-8')

        f.write('娃哈哈') # 追加写

        f.write('爽歪歪')

        f.flush()

        f.close()

      b : bytes 这个时候处理文件的是字节

        操作非文本文件的时候用带b的 在rb模式下,不能选择encoding字符集

        rb

          作用 : 在读取非文本文件的时候,比如读取MP3.图像,视频等信息的时候就需要用到rb.因为这种数据是没办法直接显示出来的.在文件上传下载时还会用到还有看的直播.实际上用的就是这种数据.

        wb

        ab

    文件拷贝

        f1 = open('d:/桌面背景.jpg',mode='rb')

        f2 = open('d:/abc.jpg'mode='wb')

        for line in f1:

        f2.write(line)

        f1.close()

        f2.flush()

        f2.close()

      文件的路径

        1. 绝对路径

          1.从磁盘根目录寻找

          2.网络上路径

        2.相对路径# 更推荐用相对路径 因为把程序拷给别人用的时候.直接把项目考走就能运行,如果用绝对路径.还需要拷外部文件.

          相对于当前你这个程序所在的文件夹.(用的最多的)

          绝对路径相对于相对路径来说

    r+ # 带加号的使用频率最高的 读写模式

      读写模式

      如果执行了读操作 那么写操作的时候都是写在文件的末尾和光标没关系

      正确用法 先读 后写

    w+

      很少用 需要移动光标

    a+ 追加读模式

      f = open('菜单',mode='a+',encoding='utf-8')

        f.write('韭菜鸡蛋饺子')

        f.seek(0)

        content = f.read()

        print(content)

  光标 使用 tell 可以知道 光标在哪里 单位

    seek()可以移动光标

    r: 默认光标在开头

    读写的时候单位是字符 但是光标移动的单位是字节

    光标移动到末尾 seek(0,2)

    seek(偏移量,位置)

      位置 : 0开头 , 1当前位置 , 2末尾

  truncate() 截断文件

      f = open('我的天哪', mode='r+', encoding='utf-8')

      f seek(9)

      f.truncate(12) # 如果没有参数. 按照光标来截断. 如果有参数. 截断到参数位置

      f.flush()

      f.close()

      注意 : 在r+模式下.如果读取了内容 . 不论读取内容多少 , 光标显示的是多少.再写入或者操作文件的时候都是在结尾进行的操作

      所以如果想要截断操作.要先挪动光标 挪动到想要截断的位置,然后进行截断,关于truncate(n),如果给了n则从头开头开始截断, 如果不给n,则从当前位置截断,后面的内容会被删除.

二 , 修改文件 过程 将文件中的内容读取到内存中将信息修改完毕,然后将源文件删除,将新文件的名字改为老文件的名字.

    语句为

      import os

      with open('alex',mode='r',encoding='utf-8') as f1, \

        open('alex_副本',mode='w', encoding='utf-8') as f2: # 这种写法可以省去 f1.flush() f1.close() 语句

        for line in f1:

          new line = line.replace('good','sb')

          f2.write(new line)

        os.remove('alex')

      os.rename('alex_副本','alex')

猜你喜欢

转载自www.cnblogs.com/f-g-f/p/9695830.html
今日推荐