Python基础-DAY16

二进制文件:
  二进制文件是以字节(byte) 为单位存储的,不以换行符(\n)为单位进行区分内容的文件读写方法

打开模式mode:
  'b'

方法:
  F.read()返回类型:
    对于文本文件,F.read()返回类型为字符串(str)
    对于二进制文件,F.read()返回类型为字节串(bytes)
  F.write(x) 用于文本/二进制文件的写
  F.tell() 返回当前文件流的绝对位置
  F.seek(offset, whence=0)  改变数据流的位置,返回新的绝对位置
  F.readable()  判断文件是否可读,可读返回True,否则返回Flase
  F.writeable() 判断文件是否可写。可写返回True,否则返回False
  F.flush()  把写入文件对象的缓存内容写入到磁盘 

F.seek方法:
  F.seek(偏移量, whence=相对位置)
    偏移量:
      大于0的数代表向文件末尾方向移动
      小于0代表向文件头方向移动
    相对位置:
      0 代表从文件头开始偏移
      1 代表从当前读写位置开始偏移
      2 代表从文件尾开始偏移


字节串(也叫字序列) bytes
作用:
  存储以字节为单位的数据
  字节串是不可变的字节序列
说明:
  字节是0~255之间的整数(0b11111111, 0b00000000)

创建空字节串 :
   B = b''      # 空字节串
   B = B""
   B = bytes()  # B 为空字节串
创建非空的字节串:
   B = b"ABCD"
   B = b'ABCD'
   B = b'''ABCD'''
   B = b'\x41\x42'

字节串的构造(创建)函数 bytes
  bytes()   创建一个空字节串, 等同于b''
  bytes(整型可迭代对象)  用可迭代对象初始化一个字节串(数值必须是0~255的整数)
  bytes(整数n)  生成n个值为0的字节串
  bytes(字符串, encoding='utf-8') 用字符串转换编码生成一个字节串

示例:
  B = bytes(range(0x41, 0x41+26)) # b'ABCD...'
  B = bytes(4)  # b'\x00\x00\x00\x00'
  B = bytes("hello", 'ascii')  b'hello'
  B = bytes("中文", 'utf-8')  # b'\xe4\xb8\xad\xe6\x96\x87'

字节串的运算:
  +   +=   *   *=
  比较运算:  < <= > >= == !=
  in /not in 运算符
  索引 index / 切片 slice

b'ABCD'  --> (0x41, 0x42, 0x43, 0x44)


字节数组 bytearray
  可变的字节序列,相当于bytes的可变版本

创建函数bytearray
   bytearray()
   bytearray(整型可迭代对象)
   bytearray(整数n)
   bytearray(字符串, encoding='utf-8')

运算操作:
  同字节串完全相同
  字节数组可以通过索引和切片赋值来改变原字节数组
例:
  ba = bytearray(b"ABCDE")
  ba[0] = 0x61  # 'a'
  print(ba)  # bytearray(b'aBCDE')
  ba[1:] = bytearray(b'bcde')  # bytearray(b'abcde')
  B = bytes(ba)  # 转为字节串
  ba2 = bytearray(B)  # 转为字节数组

bytearray方法 :
B.clear()  清空
B.append(n)  追加一个字节(n为0~255的整数)
B.remove(value)  删除第一个出现的字节,如果没有则产生ValueError错误
B.reverse()  字节顺序进行反转
B.decode(encoding='utf-8')  转为字符串
B.find(sub[, start[,end]]) 查找子字节串

bytes/bytearray与str 的区别:
   bytes/bytearray 存储字节(0~255)
   str 存储unicode字符(0~65535)

bytes与str转换:
   str ---> bytes
      b = s.encode(encoding='utf-8')
  bytes---> str
      s = b.decode(encoding='utf-8')


标准输入输出文件:
    sys.stdin   标准输入文件
    sys.stdout  标准输出文件
    sys.stderr  标准错误输出文件
  模块名:sys

说明:
  每一个python程序启动后都会能以上三个已经打开的文件供我们使用


Linux 下输入 Ctrl+d 输入文件结束符
Windows 下输入 Ctrl+z  文件结束

输入重定向
  输入重定向的内容将发送给sys.stdin
用法:
  $ python3 sys_std.py < 输入文件


汉字编码
问题:
  十字汉字是多少个字节?
  答: GBK(20个字节)/ UTF-8(30个字节)

常用编码:
  国标系列: GB18030(GBK(GB2312))
      (windows常用)
  国际标准: UNICODE <---> UTF-8  
      (Linux / Mac OS X / IOS / Android等常用)

GB2312-80编码:
  1980年发布
  两个字节进行编码,编码范围(A1A1-FEFE)
  含有6763个汉字和682个字符

GBK编码:
  1995年制订
  用两字节编码(8140~FEFE)
  完全兼容GB2312,共21003个汉字(汉文,蒙文等)

GB18030-2005 编码:
   2005年制订共27533个汉字
   用两个字节和四字节进行编码
     两字节与GBK相同
    四字节:
      略

UNICODE16编码(0x0000 ~ 0xFFFF)

UTF-8编码 (8-bit Unicode Transformation Format)
  UNICODE  <<---->> UTF-8互转
  0000~007F  一字节(ASCII)
  0080~07FF  二字节
  0800~FFFF  三字节(汉字落在此区)

UNICODE编码:
  UNICODE16(两字节)
  UNICODE32(四字节编码)

Python 编码(encode)字符串:
  'gb2312'
  'gbk'
  'gb18030'
  'utf-8'
  'ascii'


 

猜你喜欢

转载自blog.csdn.net/qq_41797451/article/details/81393155