文件处理和字符编码

Posted yunluo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件处理和字符编码相关的知识,希望对你有一定的参考价值。

一、基本的文件操作

1. 什么是文件

文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟概念。文件的操作是基于文件,即文件的操作核心,就是读和写。

2. 文件的读和写

2.1 文件的读取

在Python中,我们使用open()方法可以打开某个具体的文件,open()方法内写入文件路径。

open(r‘C:\Users\12199\Desktop\新建文本文档.txt‘)

如果想给列表增加值,我们要先给列表赋值后,才能给对应的列表增加值,文件也是一样。

# 打开文件
f = open(r'C:\Users\12199\Desktop\新建文本文档.txt')
print(f)

# <_io.TextIOWrapper name='C:\\Users\\12199\\Desktop\\新建文本文档.txt' mode='r' encoding='cp936'>

我们开始读文件。

# read模式打开文件
f = open(r'C:\Users\12199\Desktop\新建文本文档.txt', mode = 'r')
date = f.read()
print(date)
f.close()

# Python无所不能

2.2 文件的写入

# write模式打开文件
f = open(r'C:\Users\12199\Desktop\新建文本文档.txt', mode = 'w')
f.write('<Python从入门到放弃>')
f.close
f = open(r'C:\Users\12199\Desktop\新建文本文档.txt', mode = 'r')
date = f.read()
print(date)
f.close()

# <Python从入门到放弃>

在write模式,如果文件内有内容,会覆盖掉原先的内容,把新的内容写进去

二、绝对路径和相对路径

1. 绝对路径

绝对路径就是从盘符(C盘、D盘)开始写一个完整的路径

2. 相对路径

相对路径就是从当前执行文件所在的文件夹开始寻找

三、字符编码

1. 什么是字符编码

字符编码就是将人类的字符编码成计算机能识别的数字(0和1),这种转换必须遵循一套固定的标准,该标准无非是人类字符与数字的对应关系,称之为字符编码表。

2.文本编辑器存取文件的原理

  1. 打开编辑器就打开了一个进程,是在内存中,所以,用编辑器编写的内容也是存放在内存中,断电了就会消失
  2. 我们想要永久保存数据,就要让编辑器把内存的数据存储到外存中

字符编码有美国的ASCII码,中国的GBK编码,日本的Shift_JIS编码等等

以中国早期的电脑为例,当我们利用编辑器读取文件的内容的时候,内存可以读取GBK编码,但不能读取其他类型的编码,读取就会乱码,为了解决这个问题,出现了Unicode编码。Unicode编码可以识别所有形式的编码,不管是GBK编码,还是ASCII码都可以,所以现在的内存都是以Unicode形式读取硬盘中的数据。

当我们要把内存中的数据保存到硬盘中的时候,用Unicode的形式会占用更多的空间,所以这时候会把Unicode编码转换成utf-8的形式进行存储,以节省更多的空间。

如何不乱码:字符用什么编码存,就用什么编码取

四、Python2和Python3字符编码的区别

python编辑器执行test.py的三个步骤

  1. 启动python解释器
  2. 相当于一个文本编辑器,从硬盘把test.py文件的内容读入内存,读取test.py中的内容(涉及了一次字符编码)
  3. 执行刚刚从硬盘中获取的内容(生成变量就会开辟内存空间存放变量,存放变量存放到内存中,这又涉及了一次字符编码)

1. Python2

在python2中会用Unicode编码存放变量,也会用文件默认的编码存放变量

当用文件默认的编码存放变量的时候,如果终端默认的编码和文件默认的编码不一致,就会报错

如果用Unicode编码存放变量,就不会出现问题

2. Python3

在python3中是用Unicode编码存放变量的,所以不会乱码

五、文件的三种打开模式

文件操作的基础模式有三种(默认的操作模式是r模式):

  • r模式为read
  • w模式为write
  • a模式为append

文件读写内容的格式有两种(默认的读写内容的模式是b模式):

  • t模式为text
  • b模式为bytes

注意:t模式和b模式都不能单独使用,都需要和r/w/a之一连用。

1. 文件操作模式之r模式

r:read,只读模式。不能写,文件不存在的时候会报错

假设我们有一个叫f的文件对象,在r模式中,还有两种方法。

f.readline()会从文件中读取单独的一行

f.readlines()会读取文件中包含的所有行

2. 文件操作模式之w模式

w:write,只写模式。文件存在内容的时候会清空文件再写入内容;文件不存在的时候会创建文件再写入内容

3. 文件操作模式之a模式

a:append,可以追加。文件存在内容的时候会在文件的末端写入内容;文件不存在的时候回创建文件再写入内容

4. 文件读写内容之b模式

b模式是通用的模式,所有的文件在硬盘中都是以二进制的形式存储的。在b模式下,读写文件不能加上encoding参数,因为二进制不能再编码了。

六、with管理文件操作上下文

我们之前是使用open()方法打开文件,但open打开文件后,我们还要手动释放掉文件对操作系统的占用。

这时候我们可以用with open()方法,with open()方法可以自动释放掉文件对操作系统的占用,还可以用逗号分隔,一次性打开多个文件,实现文件的快速拷贝

以上是关于文件处理和字符编码的主要内容,如果未能解决你的问题,请参考以下文章

字符编码文件处理

字符编码和文件处理

python 基础之字符编码和文件处理

7.5字符编码及文件处理

day10 字符编码和文件处理

python字符编码文件处理函数