• python文件的使用


    文件 File

      文件是用于数据存储的单位
      文件通常用来长期存储数据
      文件中的数据是以字节为单位进行顺序存储的

    文件的操作流程
      1. 打开文件
      2. 读/写文件
      3. 关闭文件
      注: 任何操作系统,一个应用程序同时打开文件的数量有最大数限制

    文件的打开函数:
      open(file, mode='rt') 用于打开一个文件,返回此文件流对象
      如果文件打开失败,则会触发OSError类型的错误
    文件的关闭方法:
      F.close() 关闭文件,释放系统资源

      # 1 打开文件
      myfile = open('myfile.txt', 'rt')
      # myfile = open('./myfile.txt')
      # myfile = open('/home/tarena/waid1812/PBase/day15/code/myfile.txt')
      print("文件打开成功")
      # 2.读写文件
      s = myfile.read()
      print("myfile文件里的内容是:", s)
    
      # 3.关闭文件
      myfile.close()
    View Code

    文件的读方法:
      F.read([n])
      F.readline()
      F.readlines()

    文件的写方法:
      F.write(s) # 写入字符串或字节串(二进制模式)到文件中
      F.writelines(lst) # 写入字符串或字节串列表到文件中

    读文件模式:
      'r' 只读
    写文件模式:
      'w' 只写,可创建文件
      'x' 只写,当文件已存在时不创建文件,文件不存在于才创建文件
      'a' 追加写

      # 此示例示意用程序来创建 mynote.txt的文件,再向其中写入
      # 一些文字内容
    
      myfile = open('mynote.txt', 'w')
      myfile.write("日记
    ")
      myfile.write('2019年3月24日 晴')
      myfile.close()
    View Code

    文件的迭代读取
      文本文件流对象是一个可迭代对象,可以用for语句来遍历每一行数据迭代过程将以' ' 作用为隔符依次获取
      示例:
        fr = open('myfile.txt')
        for line in fr:
          print(line)

    标准输入输出文件
      sys.stdin # 标准输入文件
      sys.stdout # 标准输出文件
      sys.stderr # 标准错误输出文件(默认是屏幕终端)
      模块名: sys
      注: 标准 输出输出文件不需要打开了关闭就可以使用

      # 此示例示意直接操作sys.stdout 来向屏幕终端打印信息
      import sys
      sys.stdout.write("这是标准输出打印的第一行
    ")
      sys.stdout.write('这是标准输出打印出的第二行
    ')
    
      # sys.stdout.close() # 不要关闭标准 输入输出文件
    
      print("这是print打印出来的第三行")
    View Code

    二进制文件操作
      二进制文件模式字符: 'b'
      默认文件中存储和都是以字节(byte)为单位的数据,通常有人为的格式对二进制文件的读了需要用字节串(bytes)进行操作与文本文件操作不同,二进制文件读写过程中不会进行自动的编解码转换

      # 此示例示意用二进制方式写文件
      # 此文件包含256个字节,第一个字节的值为0, 第二个字节的值为1
      # ... 最后一个字节的值是:255
    
      # 打开文件
      fw = open('bin256.txt', 'wb') # 'w'-->写, 'b'--> binary
    
      b = bytes(range(256))
      print(b) # b'x00x01.....xFF'
      count = fw.write(b) # 写入字节串,返回写入的字节个数
      print("成功写入了", count, '个字节')
    
      fw.close()
    View Code

    二进制文件的随机访问
      F.tell() 返回当前文件的读写位置(从文件头以字节为单位)
      F.seek() 设置文件读写位置
      格式:
        F.seek(偏移量, whence=相对位置)
      偏移量:
        大于0的数代表向文件末尾方向移动
        小于0代表向文件头方向移动
      相对位置
        0 代表从文件头开始偏移
        1 代表从当前读写位置开始偏移
        2 代表从文件尾开始偏移

      fr = open('20char.txt', 'rb')
    
      print("刚开始时读写位置在:", fr.tell()) # 0
      b = fr.read(2)
      print(b)
      print("读完两个字节后,当前的读写位置在", fr.tell()) # 2
    
      fr.close()
    View Code
      #20char.txt = ABCDEabcde0123456789
    
      # 此示例示意设置文件的读写位置,实现文件的随机读取
      fr = open('20char.txt', 'rb')
      b = fr.read(2)
      print("当前位置在:", fr.tell()) # 2
      # 1. 从文件头向后移动5个位置
      # fr.seek(5, 0)
      # 2. 从当前位置向后移动3个字节
      # fr.seek(3, 1)
      # 3. 从文件末尾向前移动15个字节
      fr.seek(-15, 2)
    
      print("移动后,当前读写位置为:", fr.tell())
      b = fr.read(5) # b=b'abcde'
      print('b=', b)
      fr.close()
    View Code

    文件小结:
      打开模式:
        't' 文本文件打开(默认)(自动进行编解码)
        'b' 二进制文件打开
      操作方式:
        读:
          F.read(n)
          F.readline()
          F.readlines()
        写:
          F.write(字节串或字符串)
          F.write(字节串或字符串列表)

    汉字编码
      国标系列
        GB18030(二字节或四字节编码, 27533个汉字)
          GBK(二字节编码, 21003个汉字)
            GB2312(二字节编码,6763个汉字+682个字符)
        (windows常用)
      国际标准
        UNICODE32(四字节编码) <----> UTF-8
          UNICODE16(二字节编码)
        (Linux/IOS/ Android 常用)

      UTF-8 (8bit-UNICODE Transformation Format)
        0x0000 ~ 0x007F 1字节表示
        0x0080 ~ 0x07FF 2字节表示
        0x00800~ 0xFFFF 3字节表示(中文在此区)

    python 编码(encode) 字符串
      'gb2312'
      'gbk'
      'GB18030'
      'utf-8'
      'ascii'
      示例:
        s = "ABC中文"
        b1 = s.encode('gbk') # b1 为7字节
        b2 = s.encode('utf-8') # b2 为 9字节

      编码注释:
        在源文件的第一行或第二行写入如下内容为编码注释
          # -*- coding:gbk -*-
          或
          # -*- coding:utf-8 -*-
        作用:
          告诉解释执行器,当前文件的编码类型是什么

  • 相关阅读:
    Python之旅的第19天(类的初识)
    Python之旅的第18天(configparser、hashlib模块)
    Python之旅的第17天(re模块、logging模块)
    第二阶段个人冲刺博客1
    注释
    第十五周学习进度博客
    第十四周学习进度博客
    12-用户体验评价
    11-找水王
    第十三周学习进度博客
  • 原文地址:https://www.cnblogs.com/zhaoyang1997/p/10591072.html
Copyright © 2020-2023  润新知