不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • Python

    • 01.进程
    • 02.线程
    • 03.协程
    • 04.select、poll、epoll
    • 05.装饰器
    • 06.生成器和迭代器
    • 07.面向对象
    • 08.深浅拷贝
    • 09.垃圾回收
    • 10.上下文管理
    • 11.高阶函数
    • 12.次重点
      • 01.读写文件
      • 02.字符编码
      • 03.常用模块
      • 04.python2与python3的区别
  • GO

  • Java

  • 业务问题

  • 关键技术

  • 项目常识

  • 计算机基础

  • 常识
  • Python
xiaonaiqiang
2021-02-09
目录

12.次重点

# 01.读写文件

  • 读写文件(python如何读取大文件):https://www.cnblogs.com/xiaonq/p/7860309.html

  • 经典面试题:现在有一个5G的文件,用python写入另一个文件里

    • read(): 指定读取指定大小的文件(默认一次读取所有)
    • readline(): 逐行读取,适合读大文件
    • readlines(): 一次性读取所有文件, 将文件按行读取成列表
  • 我们使用了一个 while 循环来读取文件内容,每次最多读取 8kb 大小

  • 这样可以避免之前需要拼接一个巨大字符串的过程,把内存占用降低非常多。

#!/usr/bin/python
# -*- coding: utf-8 -*-
def read_big_file_v(fname):
    block_size = 1024 * 8
    with open(fname,encoding="utf8") as fp:
        while True:
            chunk = fp.read(block_size)
            # 当文件没有更多内容时,read 调用将会返回空字符串 ''
            if not chunk:
                break
            print(chunk)
path = r'C:\aaa\luting\edc-backend\tttt.py'
read_big_file_v(path)
1
2
3
4
5
6
7
8
9
10
11
12
13

# 02.字符编码

  • 各种编码由来

    • ASCII : 不支持中文(一个字母一个字节:a/b/c)
    • GBK : 是中国的中文字符,其包含了简体中文和繁体中文的字符
    • Unicode : 万国编码(Unicode 包含GBK)
  • Unicode(每个字母需要用两个字节:a/b/c)

    • 存储所有字符串都用连个字节
    • Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码
    • 规定所有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536
    • 这里还有个问题:使用的字节增加了,那么造成的直接影响就是使用的空间就直接翻倍了
  • Utf-8 : 可变长码, 是Unicode 的扩展集

    • UTF-8编码:是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类

    • ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

    • 存一个a字母用一个字节,存一个中文用三个字节

  • python2与python3的几个区别

    • Python2默认 编码方式为ASCII, Python3 默认编码方式为UTF-8(是Unicode 的扩展集)
    • python2中字符串有str和unicode两种类型, python3 中字符串有str和字节(bytes) 两种类型
    • python3中不再支持u中文的语法格式
  • python2和python3中编码转换

    • 在python3中字符串默认是unicode所以不需要decode(),直接encode成想要转换的编码如gb2312
    • 在python2中默认是ASCII编码,必须先转换成Unicode,Unicode 可以作为各种编码的转换的中转站

# 03.常用模块

  • (re)(paramiko、subprocess):https://www.cnblogs.com/xiaonq/p/7866925.html

# 04.python2与python3的区别

https://www.cnblogs.com/xiaonq/p/8706111.html

上次更新: 2025/2/25 11:09:45
11.高阶函数
01.GMP模型 ✅

← 11.高阶函数 01.GMP模型 ✅→

最近更新
01
04.数组双指针排序_子数组
03-25
02
08.动态规划
03-25
03
06.回溯算法
03-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式