【Python】文件操作-大文件复制

265 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

1. 大文件复制

大文件复制思路阐述:

  • 大文件复制案例需要考虑使用按行读取操作来复制大文件,这样对内存占用比较小。
  • 当然,使用到readline按行读取就需要使用到while循环来遍历文件。
  • 当读取不到内容时,使用break跳出循环

2. 案例演示

为实现大文件复制操作,具体代码演示如下所示:

# 1.打开
file_read = open("README.md")
file_write = open("README[复件].md", "w")


# 2. 读,写
while True:
    # 读取一行内容
    text = file_read.readline()

    # 判断是否读取到内容
    if not text:
        break

    file_write.write(text)


# 3. 关闭
file_read.close()
file_write.close()

运行结果如下图所示:使用按行遍历操作,同样可以复制源文件,并输出到目标文件,打开目标文件就如下所示,达到了复制文件的效果。

image.png

3. 文本文件的编码格式

  • 文本文件存储的内容是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等
  • Python2.x默认使用ASCII编码(不支持中文)
  • Python3.x默认使用UTF-8编码

3.1 ASCII编码

  • 计算机中只有256个ASCII字符
  • 一个ASCII在内存中占用一个字节的空间
  • 通常是早期使用的针对英文名的

Python2.x版本解释器不支持中文,那么怎么才能使其支持中文呢?

在Python2.x文件的第一行增加以下代码,解释器会以utf-8编码来处理python文件,以下这行单行注释就是告诉解释器在解析此文件时,请使用utf-8编码格式来解析。

# *-* coding:utf8 *-*
  • 在Python2.x中,即使指定了文件使用UTF-8的编码格式,但是在遍历字符串时,仍然会以字节为单位遍历字符串
  • 要能够正确的遍历字符串,在定义字符串时,需要在字符串的引号前,增加一个小写字母u,告诉解释器这是一个unicode字符串(使用UTF-8编码格式的字符串)

3.2 UTF-8编码格式

  • 计算机中使用1-6个字节来表示一个UTF-8字符,涵盖了地球上几乎所有地区的文字
  • 大多数汉字会使用3个字节表示
  • UTF-8是UNICODE编码的一种编码格式