一.软件与python解释器打开文件的方法

  1.软件打开文件读取数据的流程:

   1. 打开软件
   2. 往计算机发生一个打开文件的指令,来打开文件
   3. 读取数据渲染给用户(存取编码不一致:乱码)

  2.python解释器打开py文件
   1. 打开软件(python解释器)
   2. 往计算机发生一个打开文件的指令,来打开文件
   3. 逐行解释打开的文件内容(存取编码不一致,无法正常解释,崩溃),将执行结果展示给用户

  3.python2与python3解释器区别

   py2默认按ASCII来解释文件内容 | py3默认按UTF-8来解释文件内容,要打开其他编码文件需要加文件头

   3.1文件头:# encoding: 编码表
    功能:告诉py解释器按照什么编码来解释文件内容

二.字符编码

  1.什么是字符编码

    人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流,
  一定需要一个媒介,进行两种标识符的转化(两种标识符的对应关系) 

  2.编码表

    两种标识符的对应关系形成的结构称之为:编码表

  3.编码表的发展史    

    1. ascii(ASCII):字母、数字、英文符号与计算机01标识符的对应关系
     1.1 如何将128个字符用01完全标签
    二进制:11111111 => 255 => 1bytes(1字节) => 8个二进制位

    2.中国:研究汉字与计算机01标识符的对应关系:gb2312 => GBK(***) => GB18030
     日本:Shift_JIS
     棒子:Euc-kr

    3. 制造一个可以完成万国字符与计算机01标识符的对应关系的编码表
     编码表:unicode表
     py2:ascii,没有按万国编码,原因py2要诞生先有万国编码
     py3: utf-8, 采用万国编码来解释文本内容

  4.unicode与utf-8什么关系

    unicode:用2个字节来存储汉字,用2个字节来存储英文字母,占有空间较多,读取效率极高

    utf-8:用3-6个字节来存储汉字,用1个字节来存储英文字母,占有空间较少,读取效率低

    总结:内存都是按unicode存储数据,硬盘和cpu采用utf-8来存取数据

       unicode与utf-8采用的是一张unicode编码表,utf-8是unicode编码表体现方式,变长存储数据

三.解码与编码

  1.三种字符串 

   1.1 unicode字符串,默认字符串
     s1 = u'abc你好\n不好'
     print(s1) # abc你好

              不好
   1.2 字节字符串
     s2 = b'abc123\xb7\xb7'
     print(s2) # b'abc123\xb7\xb7'
   1.3 原义字符串: 不对字符串内存做任何操作(eg:\n的转化)
     s3 = r'abc你好\n不好'
     print(s3) # abc你好\n不好

  2.编码与解码(*****)

    2.1 将u字符串编码成b字符串

      print(u'你好'.encode('utf-8'))

    2.2将b字符串解码成u字符串

      print(b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode('utf-8'))

四.文件操作

  1.文件定义

    文件:硬盘中一块存储空间(虚拟的文件)

    文件操作:根据文件名来操作硬盘的那块存储空间,操作方式 读read 写write

  2.文件操作步骤    

      1. 打开文件

      变量名 = 文件空间
      文件路径 操作模式(读|写) 编码

     2. 操作文件(读:read() 写:write())

     3. 关闭文件 *****

  3.操作模式  

   主模式:r:读 | w:写 | a:追加
   从模式:b:按字节操作 | t:按字符操作 | +:可读可写
   了解:x:异常写 | U:被遗弃了

  4.读文件基础   

    f = open('a.txt', 'r', encoding='utf-8') # 打开文件

   data = f.read(3) # 操作文件,将所有内容读取出来,如果设置读取长度,按照规定长度读取数据
    print(data)

   #一次读取一行
    line = f.readline()
    print(line)
    line = f.readline()
    print(line)

    #按行一次性全部读出
    lines = f.readlines()
    print(lines)

    #逐步一行一行读取
    l = []
    for line in f:
      print(line)
      l.append(line)
    print(l)

    s = set()
    for line in f:
      print(line)
      s.add(line)
    print(s)

    f.close() # 关闭文件,释放操作系统对文件的持有,变量f还被应用程序持有

  5.基础写   

   # 文件不存在:会新建文件,再操作文件
   # 文件存在:先清空文件,再操作文件
    w = open('b.txt', 'w', encoding='utf-8') # 打开文件
    w.write('456') # 写入‘456’到内存

    w.close() # 从内存写入文件,关闭文件

    

  

  

DAY7 字符编码和文件操作的更多相关文章

  1. Python-字典、集合、字符编码、文件操作整理-Day3

    1.字典 1.1.为什么有字典: 有个需求,存所有人的信息 这时候列表就不能轻易的表示完全names = ['stone','liang'] 1.2.元组: 定义符号()t = (1,2,3)tupl ...

  2. Python之字符编码与文件操作

    目录 字符编码 Python2和Python3中字符串类型的差别 文件操作 文件操作的方式 文件内光标的移动 文件修改 字符编码 什么是字符编码? ''' 字符编码就是制定的一个将人类的语言的字符与二 ...

  3. python学习道路(day3note)(元组,字典 ,集合,字符编码,文件操作)

    1.元组()元组跟列表一样,但是不能增删改,能查.元组又叫只读列表2个方法 一个 count 一个 index2.字典{}字典是通过key来寻找value因为这里功能比较多,所以写入了一个Code里面 ...

  4. Python 字符编码及其文件操作

    本章节内容导航: 1.字符编码:人识别的语言与机器机器识别的语言转化的媒介. 2.字符与字节:字符占多少个字节,字符串转化 3.文件操作:操作硬盘中的一块区域:读写操作 注:浅拷贝与深拷贝 用法: d ...

  5. Python全栈开发之路 【第三篇】:Python基础之字符编码和文件操作

    本节内容 一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 改成三元运算: val = 1 if 条件成 ...

  6. DAY07、字符编码和文件操作

    一.字符编码 1.什么是字符编码? 人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流,              一定需要一个媒介,进行两种标识符的转化(两 ...

  7. Day 07 字符编码,文件操作

    今日内容 1.字符编码:人识别的语言与机器识别的语言转换的媒介 2.字符与字节:字符占多少字节,字符串转换 3.文件操作:操作硬盘的一块区域 字符编码 重点:什么是字符编码 人类能识别的字符等高级标识 ...

  8. Python 入门基础6 --字符编码、文件操作1

    今日内容: 1.字符编码 2.字符与字节 3.文件操作 一.字符编码 了解: cpu:将数据渲染给用户 内存:临时存放数据,断电消失 硬盘:永久存放数据,断电后不消失 1.1 什么是编码? 人类能够识 ...

  9. Python基础之字符编码,文件操作流与函数

    一.字符编码 1.字符编码的发展史 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit ...

随机推荐

  1. 我了解到的新知识之—MPLS

    下周末运营商来公司要对MPLS升级,对于一个多年权限管理经验的我来说未免有些陌生,幸好现在网络资源丰富,就开始了搜索之旅,找到了一些信息,所以在想干脆以后就开一个系列就叫<我了解到的新知识> ...

  2. java_工厂模式

    定义: 初学者总是把所有的代码写在一个类里面,这样是非常危险的,因为所有错误集中在一个类里了,而且代码一长,调试就很困难 所以参照工厂流水线,分车间分模块来写代码,在实际操作中也就是说将代码模块化,封 ...

  3. [04-01]css组合选择器

    /* 私人笔记 */   组合选择器:把基本选择器通过特殊符号串在一起,可以带来一些特殊的意义: 1.源码 <!DOCTYPE html> <html lang="zh&q ...

  4. Hash算法和一致性Hash算法

    Hash算法 我们对同一个图片名称做相同的哈希计算时,得出的结果应该是不变的,如果我们有3台服务器,使用哈希后的结果对3求余,那么余数一定是0.1或者2,正好与我们之前的服务器编号相同,如果求余的结果 ...

  5. 【Gradle】-NO.101.Gradle.1.gradle.1.001-【Gradle Configuration】-(

    Style:Gradle Series:Gradle Since:2018-09-20 End:2018-09-20 Total Hours:1 Degree Of Diffculty:5 Degre ...

  6. cocos creator 动态创建精灵

    var node = new cc.Node();var sprite = node.addComponent(cc.Sprite);sprite.spriteFrame = new cc.Sprit ...

  7. 初识GitHub之GitHub issues

    事实上,GitHub最重要的一个功能之一就是Issue(问题),有了Issue,极大地提高了用户的互动性,也同时推动了代码的发展,因为一人智短,众人拾柴火焰高. 在他人的仓库中,我们发现了需要的代码, ...

  8. Unable to register MBean [HikariDataSource (HikariPool-0)] with key 'dataSou rce'; nested exception is javax.management.InstanceAlreadyExistsException: com.z axxer.hikari:name=dataSource,type=HikariDa

    今天启动项目看到已经启动起来,但是看到控制台有红色,没注意是什么问题,具体在细看下,发现是一个Tomcat中发布了两个实例. 解决办法:去发布路径下,全部删掉或者删掉不用的即可.

  9. linux进程虚拟地址空间

    转载源 在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中.这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块.在Linux系统中, ...

  10. Oarcle 入门之 order by 关键字

    order by 关键字 作用:用于对查询结果进行排序 select * from emp where deptno = 20 order by sal asc /desc; 如何排序之升降问题 *用 ...