目录
一、编码
计算机的发明是为了解决数学问题,但后来计算机还有做更多的事,但它只能识别“数”,因此需要告诉计算机用哪个数字来代表哪个特定的字符。
除了0,1等阿拉伯数字之外,a,b,c等字母和其他常用符号在计算机中存储时也需要使用二进制数来表示。而具体使用哪些二机制来表示,每个人都有自己的一套规则,此为编码。
为了沟通的方便,大家需要使用同一套编码才行,否则彼此看不懂,就会造成乱码。
ASCII编码就是美国提出的一套编码,但总共只规定了百来个字母和数字,它使用了7个比特位来表示。但在中国,7个比特位完全不够用,于是中国使用的编码表GB2312使用了16个比特位,也就是两个字节来表示65536个常用汉字。
为了全世界沟通便利,Unicode编码表将世界上所有符号全部包含进去,全世界都使用这一套编码标准,所有语言达到互通。基于Unicode又提出UTF-8,可以让每个符号都不必使用相同的字节数来表示,不同符号表示的字节长度也可能不同,减少空间浪费。
如果像我们说的话让计算机明白,就需要对其编码encode(),反过来就是解码decode(),用法如下:
'人类语言'.encode('编码方式')
'计算机语言'.encode('编码方式')
print('可爱多'.encode('UTF-8'))
print('可爱多'.encode('gbk'))
结果为:
编码后得到的内容前面都有个字母b,这代表了它的类型是bytes(字节)类型的数据,\x是分隔符,用来分隔字节与字节。编码其本质是将 str类型 的数据转换成功 bytes类型 的数据。
二、文件读写
1、读文件
分为三步:打开文件——读文件——关闭文件
先在桌面新建一个test文件夹,在文件夹里新建一个名为abc的txt文件,里面随便写。
第一步,使用open()函数打开文件
file = open('/User/LLL/Desktop/test/abc.txt','r',encoding = 'UTF-8')
变量 file 中存放读取文件数据,open()函数中有三个变量:
'/User/LLL/Desktop/test/abc.txt'
'r'
encoding = 'UTF-8'
其中,'/User/LLL/Desktop/test/abc.txt' 代表文件的地址,也就是文件存放在哪里。
文件地址一般有两种:相对路径和绝对路径。
绝对路径是最完整的路径,相对路径指的是相对于当前文件夹的路径,也就是当前编写的py文件所放的文件夹路径。
若需要打开的文件和 open.py 在用一个文件夹内,此时只用相对路径就行,若要打开其他文件夹内的文件,则需要绝对路径。
Windows中相对路径使用 / ,绝对路径使用 \ 。但 \ 在python中表示转义字符,为了避免冲突,绝对路径常写作以下两种:
open('C:\\Users\\LLL\\Desktop\\test\\abc.txt') #将'\'替换成'\\' open(r'C:\Users\LLL\Desktop\test\abc.txt') #在路径前加上字母r
open()函数的第二个参数是 'r' ,表示 read ,说明是以读的模式打开此文件。除了 'r' 外,还有 'w'(写) ,'a' (追加)。
open()函数的第二个参数是encoding = 'UTF-8',表示返回的数据使用的是UTF-8的编码,一般采用UTF-8或者gbk。
第二步,使用 read() 函数读文件。
file = open('/Users/LLL/Desktop/test/abc.txt', 'r',encoding='utf-8')
f1 = file.read()
print(f1)
第二行代码是读取 file 的内容,写法是 file 后面加个 . 点,再写read() ,并将读到的内容放在变量 f1中。若想要看看读到了什么内容,可以使用 print()函数。
第三步,关闭文件,使用close() 函数。
file = open('/Users/LLL/Desktop/test/abc.txt', 'r',encoding='utf-8')
f1 = file.read()
print(f1)
file.close()
2、写文件
写文件也是三步:打开文件——写文件——关闭文件。
第一步使用open()函数以写入的模式打开文件.
file2 = open('/Users/LLL/Desktop/test/abc.txt','w',encoding='utf-8')
第二步,往文件中写入内容,使用write() 函数。
file2 = open('/Users/LLL/Desktop/test/abc.txt','w',encoding='utf-8')
file2.write('abc\n')
file2.write('def\n')
file2.close()
运行完之后打开文件会发现,原来的内容没有了,只剩下刚刚写入的abc和def。这是因为 'w' 模式会将原来文件中的内容清空之后再写入,若只是想在原来的基础上增加一些内容,不清除源文件则需要使用 'a' (追加)模式。
file2 = open('/Users/LLL/Desktop/test/abc.txt','a',encoding='utf-8')
file2.write('abc\n')
file2.write('def\n')
file2.close()
注意:1、write() 函数写入的是字符串类型
2、在 'a' 和 'w' 模式下,如果打开的文件不存在,那么open()函数会自动创建
3、'wb' 表示以二进制的方式写入文件,图片和音频就是以二进制进行保存
为了避免打开文件后忘记关闭,可以使用with关键字
file1 = open('abc.txt','a')
file1.write('abc')
file1.close()
# 使用with关键字
with open('abc.txt','a') as file1:
#with open('文件地址','读写模式') as 变量名:
file1.write('张无忌')
读取文件时,一般使用read()函数,但若是想要按行处理,而非一整个处理时,使用readline() 函数。
file = open('/Users/LLL/Desktop/scores.txt','r',encoding='utf-8')
f1 = file.readlines()
file.close()
print(f1)
打印的结果是一个列表,列表中每个字符串表示文件中的一行,有多少行就会有多少个字符串,并且每个字符串后面还有换行符号\n,接着可以使用for循环来遍历这个列表来处理其中的数据。
file = open('/Users/LLL/Desktop/scores.txt','r',encoding='utf-8')
f1= file.readlines()
file.close()
for i in f1:
print(i)