对应关系:(逢二进一) 【比特】(bit):用来存放一位0或1,就是计算机里最小的存储单位,叫做【位】,也叫【比特】(bit)。 【字节】(byte):我们规定8个比特构成一个【字节】(byte),这是计算机里最常用的单位。 1 byte = 8 bit,也就是1字节等于8比特
【编码】encode() 【解码】decode() 用法:
print('我爱你'.encode('utf-8')) print(b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'.decode('utf-8')) >b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0' >我爱你 #前面的字母b,比如b'\xce\xe2\xb7\xe3',这代表它是bytes(字节)类型的数 据。\x是分隔符,用来分隔一个字节和另一个字节。 #用decode()解码的时候则要注意,UTF-8编码的字节就一定要用UTF-8的规则解码, 其他编码同理,否则就会出现乱码或者报错的情况Windows系统里,常用\来表示绝对路径,/来表示相对路径 \在Python中是转义字符,所以时常会有冲突。为了避坑,Windows的绝对路径通常要稍作处理,写成以下两种格式:
open('C:\\Users\\Ted\\Desktop\\test\\abc.txt') #将'\'替换成'\\' open(r'C:\Users\Ted\Desktop\test\abc.txt') #在路径前加上字母r分三步:
打开文件读取文件关闭文件 a = open('/Users/Ted/Desktop/test/abc.txt','r',encoding='utf-8') file = a.read() print(file) a.close() #打开文件用open() ,'/Users/Ted/Desktop/test/abc.txt'是文件的绝对路径 字符串 'r',表示 read,表示我们以读的模式打开了这个文件。 参数encoding='utf-8',表示的是返回的数据采用何种编码,一般采用utf-8或者gbk。注意这里是写encoding而不是encode #读取文件用 .read() ,将a读取就是a.read(),读取好的文件保存到file。用 print()打开 #关闭文件用 .close(),将a关闭。就是a.close()写入文件 三步:打开文件——写入文件——关闭文件。
file1 = open('/Users/Ted/Desktop/test/abc.txt', 'w',encoding='utf-8') #以写入的方式打开文件abc.txt file1.write('张无忌\n') #把字符串'张无忌'写入文件file1 file1.write('宋青书\n') #把字符串'宋青书'写入文件file1 file1.close() #关闭文件 这里的 'w' 是以写入的方式去打开,当写入文本文件write() 的时候会暴力 清空文本中 的所有文件然后再加入元素,如果不想清空文本里的文件只 是想加入一些元素的话把 'w' 改为 'a' ,这里的 'a' 指的是append的意 思。为了避免打开文件后忘记关闭,占用资源或当不能确定关闭文件的恰当时 机的时候,我们可以用到关键字with,之前的例子可以写成这样:
# 普通写法 file1 = open('abc.txt','a') file1.write('张无忌') file1.close() # 使用with关键字的写法 with open('abc.txt','a') as file1: #with open('文件地址','读写模式') as 变量名: #格式:冒号不能丢 file1.write('张无忌') #格式:对文件的操作要缩进 #格式:无需用close()关闭 #write()的参数必须是一个字符串 #writelines()可以是序列如果我们想写入的数据不是文本内容,而是音频和图片的话,该怎么做呢? 我们可以看到里面有’wb’的模式,它的意思是以二进制的方式打开一个文件用于写入。因为图片和音频是以二进制的形式保存的,所以使用wb模式就好了
函数readlines(),也就是“按行读取”
a=open('d:\\python\\文件夹1\\text.txt','r',encoding=('utf-8')) file=a.readlines() a.close() print(file) >['罗恩 23 35 44\n', '哈利 60 77 68 88 90\n', '赫敏 97 99 89 91 95 90\n', '马尔福 100 85 90'] #readlines() 会从txt文件取得一个列表,列表中的每个字符串就是txt中 的每一行。而且每个字符串后面还有换行的\n符号。.split() 函数,会按空格把字符串里面的内容分开
a=open('d:\\python\\文件夹1\\text.txt','r',encoding=('utf-8')) file=a.readlines() a.close() print(file) for i in file: print(i) for i in file: print(i.split()) >['罗恩 23 35 44\n', '哈利 60 77 68 88 90\n', '赫敏 97 99 89 91 95 90\n', '马尔福 100 85 90'] >罗恩 23 35 44 >哈利 60 77 68 88 90 >赫敏 97 99 89 91 95 90 >马尔福 100 85 90 >['罗恩', '23', '35', '44'] >['哈利', '60', '77', '68', '88', '90'] >['赫敏', '97', '99', '89', '91', '95', '90'] >['马尔福', '100', '85', '90']join()函数,是把字符串合并
a='罗恩 23 35 44' print(a.split()) #将字符串按里面的空格分开,并以列表的形式出现 b=['哈利', '60', '77', '68', '88', '90'] ba=' ' #将列表里的字符串按空格连接 print(ba.join(b)) bb='+' #将列表理的字符串按+号连接 print(bb.join(b)) >['罗恩', '23', '35', '44'] >哈利 60 77 68 88 90 >哈利+60+77+68+88+90