【python笔记】文件编码与读写

目录

一、编码

二、文件读写

1、读文件

2、写文件


一、编码

计算机的发明是为了解决数学问题,但后来计算机还有做更多的事,但它只能识别“数”,因此需要告诉计算机用哪个数字来代表哪个特定的字符。

除了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)  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神通广大白居易

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值