• day_09


    上节课回顾

    字符编码

    什么是字符编码

    二进制和字符的映射关系

    字符编码的发展史

    ascill码 --》美国人用

    中国人也要用,gb2312;日本人也要用,shit……

    早期,大家就是自己玩自己的,导致硬盘里各种编码的数据都有

    但是有一天韩国人想看美国大片,就会导致乱码

    所以说韩国人想统一世界的编码格式,最后美国人造出了unicode(内存)统一了

    既然内存是unicode,那么保存按理来说也应该用unicode,但是unicode占用过多的内存空间

    为了节省内存空间,保存用utf8

    内存中是unicode,硬盘是utf8

    未来硬盘,内存都将是utf8

    gbk和gb2312

    GB2312--->常用字

    gbk--》所有字

    总结:用什么编码写,就用什么编码读

    python2和python3字符编码的区别

    python解释器启动的流程

    1. python解释器相当于文本编辑器,读入字符 --》 字符编码
      1. python2默认是ascill码读入字符;python3默认utf8读入字符
      2. 如果在pycharm中的字符用的是gbk编码写入,如果你想用python正常读入字符,必须得加上coding:gbk
    2. 解析字符(有语法和关键字的概念)--》报语法/逻辑错误
    3. 存储变量,输出(往终端打印)--》字符编码
      1. python2用两种方式存储变量
        1. u'中文'用unicode存储变量,用unicode存储变量,如果终端默认utf8格式的编码,不会乱码
        2. '中文'用coding头指定的编码存储变量,假设coding头指定编码为gbk,如果终端默认utf8格式的编码,会乱码
      2. python3默认用unicode存储变量,用unicode存储变量,如果终端默认utf8格式的编码,不会乱码

    不可能会用到,只是了解(常识性的东西)

    今日所学

    文件处理

    什么是文件处理:修改存储的信息

    什么是文件:操作系统提供的虚拟单位,用二进制来存储信息

    操作文件的流程

    1. 打开文件
    2. 修改/读取文件
    3. 保存文件
    4. 关闭文件

    文件的三种打开方式和两种模式

    1. r 只读不可写
    2. w 清空后在写
    3. a 追加写

    t模式,针对文本

    b模式,针对二进制

    w和a模式可以自动创建文件

    绝对路径和相对路径

    绝对路径

    从盘符开始一直到文件的位置

    相对路径

    执行文件的文件夹下的文件名,执行文件和打开文件属于同一文件夹下

    with管理文件上下文

    with提供一个自动关闭文件的功能(接触了操作系统的占用)

    文件的高级应用

    仅作了解

    1. 可读可写 r+(光标在文件头部,覆盖后面的字符)
    2. 可读可写 w+ (和w没任何区别)
    3. 可写可读 a+ (默认光标在尾部)

    移动光标的位置

    seek

    with open('test.py', 'rb') as fr:
        fr.seek(5)  # 移动了3个字节,一个中文,默认从开头开始
        print(fr.read())
    

    whence

    规定只有0,1,2三种模式,0相当于从文件头开始,1相当于文件所在位置,2相当于从文件尾开始

    tell

    告诉你当前的位置

    with open('test.py', 'rb') as fr:
        fr.seek(3, 0)
        print(fr.tell())
    

    truncate:截断

    with open('test.py', 'ab') as fa:
        fa.truncate(2)
    

    移动光标(以字符为单位)

    read
    with open('test.py', 'r', encoding='utf8') as fr:
        print(fr.read(3))  # n表示n个字符,不加默认读取所有 # 中文和英文都属于一个字符
    
    

    登录注册

    # 注册
    
    count = 0
    while count < 3:
        username_inp = input('请输入你的用户名:')
        pwd_inp = input('请输入你的密码:')
        re_pwd_inp = input('请在此输入你的密码:')
    
        if not pwd_inp == re_pwd_inp:
            print('两次密码输入不一致')
            count += 1
            continue
    
        with open('user_info.txt', 'a', encoding='utf8') as fa:
            fa.write(f'{username_inp}:{pwd_inp}
    ')  # :表示用户名和密码的分割;|用户和用户之间的分割
            fa.flush()
            break
    
    # 登录
    username_inp = input('请输入你的用户名:')
    pwd_inp = input('请输入你的密码:')
    
    with open('user_info.txt', 'r', encoding='utf8') as fr:
        for user_info in fr:
            username, pwd = user_info.split(':')
    
            if username.strip() == username_inp and pwd.strip() == pwd_inp:  # strip可以去掉两端的换行符
                print('登录成功')
                break
            # else:
            #     continue  # continue一般不写在最后一行
        else:
            print('登录失败')
    
    # 一个项目从来都不会在知识点难倒你, 只会在逻辑方面难倒你(敲少了)
    
    

    文件的修改

    文件没有修改一说,只有覆盖

    可以同时打开多个文件

    with open('test.py', 'r', encoding='utf8') as fr, 
            open('test_swap.py', 'w', encoding='utf8') as fw:
        data = fr.read()
    

    再大的文件都能修改

  • 相关阅读:
    SQL的增删改查
    SQL语句的分类
    创建新DB和新用户&DBeaver连接
    jQuery css() 方法:设置或返回被选元素的一个或多个样式属性
    jQuery
    jQuery
    jQuery
    jQuery
    jQuery
    jQuery
  • 原文地址:https://www.cnblogs.com/maqiaobin/p/11544629.html
Copyright © 2020-2023  润新知