新濠天地 > 新濠编程网 >   1. 文件路径,wb 二进制方式写入文件

原标题:  1. 文件路径,wb 二进制方式写入文件

浏览次数:122 时间:2019-09-23

#读取文件为r ,写为w , a 为写最终追加

python文件操作

f = open("dfsdfsdf",r,encoding = 'utf-8')

文件格式:

#读写文件

  展开两个文书,必要的文书的参数:
  1. 文书路线
  2. 文本编码格式
  3. 张开药格局mode:(读、写、读写、写读、追加、改。。。)

f = open("dasdasda","r+",encoding ='utf-8')

    列:
      # f1 = open('log1', encoding='gbk', mode='r') #打开文件
      # print(f1.read()) #读取文件
      # f1.close() #闭馆文件

#写读文件 与读写分歧 是先写后读取 。

  列子中f1 叫文件句柄,能够叫f,file,file_hander,f_h。。。只倘诺以f开端都有相当的大希望是文本句柄。
  Open() 是调用的嵌入函数,实际是内置巴中调用的windos里面,windos系统的个中的open使用,在windows下是gbk,在linux下是utf-8。

f = opne("dfsdfs","w+",encoding='utf-8')

  一切对文件举办的操作都是依照文件句柄F1

f.write("---------------------------------------------")

实行流程:

print

  展开文件并发出文书句柄 —-> 对文本句柄进行操作 ——> 关闭文件句柄

f.seek

  注意:
    1.当下是用哪些编码写的用哪些编码展开
    2.在路线层级教多时候有一些会被暗中认可特殊管理,所以路径写错会常常报错。
      解决办法:
        在门路前面加r,表示那些门路仅表示路径,不意味其他
        在歧义路线前在多加四个斜杠去除转义
        路线分为绝对路线和相对路线需求潜心

print(f.readline

文件的读、写、追加:

#rb 二进制读取文件 ,未有encoding因为二进制未有字符集类型

  文件的常用操作分为读取,写入,和充实,r/w/a

f = open("dfsdfsdfsd",'rb')

  文件的读(r):
    读方式分为r 、rb、r+、r+b

#wb 二进制格局写入文件

    r模式:

f = open("dfsdfsd",'wb')

    rb模式:
      带b操作的都以非文字的文书(譬喻图片录像等)。以byte类型读取,私下认可本人定义读取格局了
      read(n)读出一部分,n等于几就读出多少个字节

f.write("hellol word")

    r+模式:
      先读后写

f.close()

    r+b模式:
      先度后写管理非文字类的文本

#修改文件

    (r)情势下边包车型地铁读取格局:

      read()
        全部读出来

      read(n)
        读出一部分,n等于几就读出多少个字符。

      .readline()按行读取
        暗中认可读取一行,写一行读一行,空行也读取。

      .readlines()
        全部读出,并放在八个列表中,列表中每一个成分正是单排内容

      .for循环读取文件句柄,
        个中里面包车型地铁f1,是被迭代询问出来的,也是按行读取,查出来一条然后释放一条,在继续查询,每趟只占一条,最大限度裁减内部存款和储蓄器压力

          (汉兰达)读取格局比方:

              # 1 read() 全读出来
              # f1 = open('log1', encoding='utf-8')
              # content = f1.read()
              # print(content)
              # f1.close()

              #2 read(n) 读一部分 #默认是r模式
              # f1 = open('log1', encoding='utf-8')
              # content = f1.read(3)
              # print(content)
              # f1.close()

              # f1 = open('log1', mode='rb')
              # print(f1.read(3).decode('utf-8'))
              # f1.close()
              #r 模式read(n) n 遵照字符读取。
              #rb 格局read(n) n 依照字节读取。

              # #3 readline() 按行读取
              # f1 = open('log1', encoding='utf-8')
              # print(f1.readline())
              # print(f1.readline())
              # print(f1.readline())
              # f1.close()

 #4 readlines()
 # f1 = open('log1', encoding='utf-8')
 # print(f1.readlines())
 # f1.close()

 # 5 for 循环
 # f1 = open('log1', encoding='utf-8')
 # for line in f1:
 # print(line)
 # f1.close()

 # f1 = open('1.jpg', mode='rb')
 # print(f1.read())
 # f1.close()

文本的写:(w)

  W形式下若无公文,会自动创造文件进行写入
  写入前假若文件存在,是先清空再写入新剧情。
  在写方式下要潜心调度光标,借使在写入完毕后,指针会在最终一个人,再持续读的时候,前面未有其余内容,供给调动光标到初阶地点然后读取内容。
  seek()——指针调解光标到0
  seek(n)——将指针任性调度到有个别n的岗位
  seek(0,2)——指针调解到最终

  写形式分为w wb w+ w+b

  w模式:

  wb模式:
    管理非文字的文书

  w+模式:
    先写后读

  w+b模式:
    先写后读,处理非文字类文件

      举例:
        # f1 = open('log2', encoding='utf-8', mode='w')
        # f1.write('桃白白fdksagdfsa')
        # f1.close()

        # 图片的读取及写入
        # f1 = open('1.jpg', mode='rb')
        # content = f1.read()

        # f2 = open('2.jpg', mode='wb')
        # f2.write(content)
        # f1.close()
        # f2.close()

        # w+ 先写后读
新濠天地,         # f1 = open('log2', encoding='utf-8', mode='w+')
        # f1.write('两款引擎了')
        # f1.seek(0) #######此间调度光标指针为0否则在读取的时候从不任何结果,原因写入后指针在结尾,再向后读的时候未有内容
        # print(f1.read())
         # f1.close()

文本的充实:(a)

  充实情势分为a ab a+ a+b

  a模式:
    1.一向不原来的书文件,创设新文件写入
    2.设有最先的文章件,在文件最终边追加新剧情。
    3.若是另起一行追加,在头里加n换行符就可以

  a+模式:
    管理非文字类文件

  a+模式:
    追加后读,也急需调度指针

  a+b模式:
    先追加后读非文字类公事

        举例:
          # a 未有公文,新建文件写入内容
          # f1 = open('log3', encoding='utf-8', mode='a')
          # # f1.write('alex 666')
          # f1.write('nalex 666')
          # f1.close()

          # a+
          # f1 = open('log3', encoding='utf-8', mode='a+')
          # f1.write('python')
          # f1.seek(0)
          # print(f1.read())
          # f1.close()

  别的文件操作:

    .Readtable()
      ——推断是不是可读

    .Writetable()
      ——剖断是还是不是可写

    .tell()
      ——读出光标地点

    .seek()
      ——指针调治光标到0

    .seek(n)
      ——将指针率性调度到有个别n的职务

    .seek(0,2)
      ——指针调治到最终

    .truncate()
      ——将原来的书文件依照字节进行截取
      ——w会清空文件,r未有写操作权限,所以只还好智能在A情势或许A+形式下使用

        举例:
          # f1 = open('log3', encoding='utf-8', mode='a+')
          # # f1.write('python')
          # # print(f1.read())
          # print(f1.readable())
          # print(f1.writable())
          # f1.close()

          # f1 = open('log2', encoding='utf-8')
          # f1.read()
          # print(f1.tell())
          # print(f1.seek(0))
          # print(f1.seek(0,2))
          # f1.seek(12) # 大肆调节
          # f1.seek(0,2) #光标调解到结尾
          # f1.seek(0) #光标调解到起先
          # print(f1.tell()) # 告诉光标的职位
          # f1.close()

          # f1 = open('log3', encoding='utf-8', mode='a+')
          # f1.truncate(3) # 遵照字节对原来的小说件实行截取 必需在a 或 a+ 方式
          # f1.close()

  其余验证:     

    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+等形式下测验效果。

  With+as用法
    with open('文件名',encoding='字符集类型',mode=‘展开药格局’)as f1,with open('文件名',encoding='字符集类型',mode=‘张开药形式’)as f1,。。。。。。

    优点:
      1. 不用主动关闭文件句柄
      2. 叁个with语句中可同有的时候间操作多个公文句柄。As一个完结后加二个逗号前面继续接新句柄。

    举例:

      # with open('log1', encoding='utf-8') as f1,
      # open('log2', encoding='utf-8', mode='w') as f2:
      # content = f1.read()
      # f2.write(content)

      # with open('log1', encoding='utf-8') as f1:
      # print(f1.read())
      # f1.close()
      # pass
      # with open('log1', encoding='utf-8',mode='w') as f2:
      # f2.write('666')

  宪章文件的退换流程:
    1. 以读的情势,读出原作件。
    2. 以写的方式,展开新文件。
    3. 将原著件读出遵照供给修改,将修改后的内容写入新文件。
    4. 剔除最先的小说件
    5. 将新文件重命名原来的书文件

    举例:

      # import os
      # with open('file', encoding='utf-8') as f1,
      # open('file.bak', encoding='utf-8', mode='w') as f2:
      # old_content = f1.read()
      # new_content = old_content.replace('alex', 'SB')
      # f2.write(new_content)
      #
      # os.remove('file')
      # os.rename('file.bak', 'file')

    使用for循环修改:

      # import os
      # with open('file', encoding='utf-8') as f1,
      # open('file.bak', encoding='utf-8', mode='w') as f2:
      # for line in f1:
      # new_line = line.replace('SB','alex')
      # f2.write(new_line)
      #
      # os.remove('file')
      # os.rename('file.bak', 'file')

      为啥这边写形式能够得逞修改,没有清空文件?

      原因在并未有停息writ那些文件句柄此前的,数拾回写操作都以能够写入的

本文由新濠天地发布于新濠编程网,转载请注明出处:  1. 文件路径,wb 二进制方式写入文件

关键词:

上一篇:注释最全的C语言链表的增删改查

下一篇:没有了