• 字符编码


    1.运行程序的三个核心硬件

        cpu

        内存

        硬盘

      任何一个程序要想运算,必须先有硬盘加载到内存,然后cpu去内存取指指令运行着的应用程序产生的数据必先存在内存

    2.python解释器运行一个py文件(xxx.py)步骤

      1.将python解释器的代码由硬盘读到内存2.将xxx.py以普通文本文件形式读到内存3.python读取文件内容 识别python语法 执行相应操作

      ps:普通的文本编辑器与python解释器前两步都是一样的

    (需要掌握的)

    unicode的两个特点

      1.用户在输入的时候,无论输入什么字符都能够兼容万国字符

      2.其他国家编码的数据由硬盘读到内存的时候unicode与其他各个国家的编码都有对应的关系

    (必须掌握的)

      数据由内存保存到硬盘

      1.内存中的unicode格式二进制数字             》》》编码(encode)》》》   utf-8格式的二进制数据

      硬盘中的数据由硬盘读到内存

      1.硬盘中的utf-8格式的二进制数据              》》》解码(decode)》》》     内存中unicode格式的二进制数据

    (******)

    保证不乱码在于

      文本文件以什么编码编的就以什么编码解

    python2
    将py文件按照文本文件读入解释器中默认使用ASCII码(因为在开发python2解释器的unicode还没有盛行)
    python3
    将py文件按照文本文件读入解释器中默认使用utf-8

    文件头
    # coding:utf-8
    1.因为所有的编码都支持英文字符,所以文件头才能够正常生效

    基于Python解释器开发的软件,只要是中文,前面都需要加一个u
    为了的就是讲python2(当你不指定文件头的时候,默认用ASCII存储数据,如果指定文件头那么就按照文件头的编码格式存储数据)

    python3中字符串默认就是unicode编码格式的二进制数

    补充:
    1.pycharm终端用的是utf-8格式
    2.windows终端采用的是gbk

    文件处理

    什么是文件?
    操作系统提供给用户操作复杂硬件(硬盘)的简易的接口

    为什么操作文件
    人或者应用程序需要永久的保存数据

    如何用
      f = open()
      f.read()
      f.close()

    通过python代码操作文件

    r取消转义

    f =open(r'D:Python项目day07a.txt',mode='rt',encoding='utf-8')# 向操作系统发送请求  打开某个文件

    应用程序要想操作计算机硬件 必须通过操作系统来简介的操作
    print(f) # f是文件对象
    print(f.read()) # windows操作系统默认的编码是gbk
    f.read() # 向操作系统发请求 读取文件内容
    f.close() # 告诉操作系统 关闭打开的文件
    print(f)
    print(f.read())

    # 文件上下文操作
    with open(r'D:Python项目day07a.txt',encoding='utf-8') as f ,
    open(r'D:Python项目day07.txt',encoding='utf-8') as f1: # f仅仅是一个变量名 你把它看成是一个遥控器
    print(f)
    print(f.read())
    print(f1)
    print(f1.read())

    文件处理模式

    文件打开的模式
    r 只读模式
    w 只写模式
    a 追加写模式
    操作文件单位的方式
    t 文本文件 t在使用的时候需要指定encoding参数 如果不知道默认是操作系统的默认编码
    b 二进制 一定不能指定encoding参数

    mode参数 可以不写 不写的话默认是rt 只读的文本文件 这个t不写默认就是t
    with open(r'D:Python项目day07a.txt',mode='r',encoding='utf-8') as f:
    print(f.readable()) # 是否可读
    print(f.writable()) # 是否可写
    print(f.read()) # 一次性将文件内容全部读出

    with open(r'D:Python项目day071.jpeg',mode='rb') as f:
    print(f.readable()) # 是否可读
    print(f.writable()) # 是否可写
    print(f.read()) # 一次性将文件内容全部读出

    r模式在打开文件的时候 如果文件不存在 直接报错
    文件路径可以写相对路径 但是需要注意该文件必须与执行文件在同一层文件下
    with open(r'a.txt',mode='r',encoding='utf-8') as f:
    with open(r'a.txt','r',encoding='utf-8') as f1: mode关键字可以不写
    print(f.readable()) # 是否可读
    print(f.writable()) # 是否可写
    print(">>>1:")
    print(f.read()) # 一次性将文件内容全部读出
    print('>>>2:')
    print(f.read()) # 读完一次之后 文件的光标已经在文件末尾了,再读就没有内容了可读
    print(f.readlines()) # 返回的是一个列表 列表中的一个个元素对应的就是文件的一行行内容
    for line in f: # f可以被for循环 每for循环依次 读一行内容
    print(i) # 这个方法 就可以解决大文件一次性读取占用内存过高的问题
    print(f.readline()) # 只读取文件一行内容
    print(f.readline())
    print(f.readline())
    print(f.readline())

    w模式:w模式一定要慎用
    1.文件不存在的情况下 自动创建该文件
    2.当文件存在的情况下 会先清空文件内容再写入
    with open(r'xxx.txt',mode='w',encoding='utf-8') as f:
    print(f.readable()) # 是否可读
    print(f.writable()) # 是否可写
    f.write('不不不,你没有翻~ ')
    f.write('不不不,你没有翻~ ')
    f.write('不不不,你没有翻~ ')
    f.write('不不不,你没有翻~ ')
    f.write('不不不,你没有翻~')
    l = ['不sdffs,sdfs有翻~ ','不sdfsdf不,你sdfsf翻~ ','不sfad不,你没sa翻~ ']
    f.writelines(l)
    上下等价
    for i in l:
    f.write(i)

    a模式
    1.当文件不存在的情况下 自动创建该文件
    2.当文件存在的情况下,不清空文件内容, 文件的光标会移动文件的最后
    with open(r'yyy.txt',mode='a',encoding='utf-8') as f:
    print(f.readable()) # 是否可读
    print(f.writable()) # 是否可写
    f.write('我是小尾巴 ')

  • 相关阅读:
    「golang」go-micro指定consul地址
    「postgres」无数据则插入,有数据不做插入
    「postgres」导出数据以及分割数据
    「postgre」调整表结构
    「postgre」查看DB的物理占用空间
    「postgre」INT最大值
    「postgre」服务重启
    「golang」关于TIME_WAIT优化
    深入理解Spring Boot属性配置文件
    springboot 中的commandLineRunners接口
  • 原文地址:https://www.cnblogs.com/KrisYzy/p/11139175.html
Copyright © 2020-2023  润新知