zoukankan      html  css  js  c++  java
  • 文件操作 08

    文件操作

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

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

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

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

          content = f.readlines()

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

          print(line1)

            读r 只能读 不能写

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

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

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

            content = f.readlines()

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

            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('周笔畅 ')

          f.write('胡辣汤 ')

          f.write('实付款 ')

          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')

  • 相关阅读:
    文本转换成音频流
    把文本以图片的形式保存
    list集合绑定在datagridview上时如何实现排序
    厘米转换成像素
    sql经典语句收集
    存储过程加密
    跨服务器sql操作
    lvs(+keepalived)、haproxy(+heartbeat)、nginx 负载均衡的比较分析
    [Big Data]Hadoop详解一
    CDN技术详解及实现原理
  • 原文地址:https://www.cnblogs.com/f-g-f/p/9695830.html
Copyright © 2011-2022 走看看