标签:写入 编码 硬盘 现在 编码转换 写文件 pen 赋值 步骤
文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟概念。文件的操作是基于文件,即文件的操作核心,就是读和写。
在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无所不能
# 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模式,如果文件内有内容,会覆盖掉原先的内容,把新的内容写进去
绝对路径就是从盘符(C盘、D盘)开始写一个完整的路径
相对路径就是从当前执行文件所在的文件夹开始寻找
字符编码就是将人类的字符编码成计算机能识别的数字(0和1),这种转换必须遵循一套固定的标准,该标准无非是人类字符与数字的对应关系,称之为字符编码表。
字符编码有美国的ASCII码,中国的GBK编码,日本的Shift_JIS编码等等
以中国早期的电脑为例,当我们利用编辑器读取文件的内容的时候,内存可以读取GBK编码,但不能读取其他类型的编码,读取就会乱码,为了解决这个问题,出现了Unicode编码。Unicode编码可以识别所有形式的编码,不管是GBK编码,还是ASCII码都可以,所以现在的内存都是以Unicode形式读取硬盘中的数据。
当我们要把内存中的数据保存到硬盘中的时候,用Unicode的形式会占用更多的空间,所以这时候会把Unicode编码转换成utf-8的形式进行存储,以节省更多的空间。
如何不乱码:字符用什么编码存,就用什么编码取
python编辑器执行test.py的三个步骤
在python2中会用Unicode编码存放变量,也会用文件默认的编码存放变量
当用文件默认的编码存放变量的时候,如果终端默认的编码和文件默认的编码不一致,就会报错
如果用Unicode编码存放变量,就不会出现问题
在python3中是用Unicode编码存放变量的,所以不会乱码
文件操作的基础模式有三种(默认的操作模式是r模式):
文件读写内容的格式有两种(默认的读写内容的模式是b模式):
注意:t模式和b模式都不能单独使用,都需要和r/w/a之一连用。
r:read,只读模式。不能写,文件不存在的时候会报错
假设我们有一个叫f的文件对象,在r模式中,还有两种方法。
f.readline()会从文件中读取单独的一行
f.readlines()会读取文件中包含的所有行
w:write,只写模式。文件存在内容的时候会清空文件再写入内容;文件不存在的时候会创建文件再写入内容
a:append,可以追加。文件存在内容的时候会在文件的末端写入内容;文件不存在的时候回创建文件再写入内容
b模式是通用的模式,所有的文件在硬盘中都是以二进制的形式存储的。在b模式下,读写文件不能加上encoding参数,因为二进制不能再编码了。
我们之前是使用open()方法打开文件,但open打开文件后,我们还要手动释放掉文件对操作系统的占用。
这时候我们可以用with open()方法,with open()方法可以自动释放掉文件对操作系统的占用,还可以用逗号分隔,一次性打开多个文件,实现文件的快速拷贝
标签:写入 编码 硬盘 现在 编码转换 写文件 pen 赋值 步骤
原文地址:https://www.cnblogs.com/yunluo/p/11317915.html