python day08 文件操作
程序员文章站
2022-06-24 14:13:56
2019.4.8 S21 day08笔记总结 一、进制 对于计算机而言无论是文件存储 / 网络传输数据本质上都是:二进制(010101010101),如:电脑上存储视频/图片/文件都是二进制; QQ/微信聊天发送的表情/文字/语言/视频 也全部都是二进制。 进制: 2进制,计算机内部。 8进制 10 ......
2019.4.8 s21 day08笔记总结
一、进制
对于计算机而言无论是文件存储 / 网络传输数据本质上都是:二进制(010101010101),如:电脑上存储视频/图片/文件都是二进制; qq/微信聊天发送的表情/文字/语言/视频 也全部都是二进制。
进制:
- 2进制,计算机内部。
- 8进制
- 10进制,人来进行使用一般情况下计算机可以获取10进制,然后再内部会自动转换成二进制并操作。
- 16进制,一般用于表示二进制(用更短的内容表示更多的数据),一版是:\x 开头。
二进制 | 八进制 | 十进制 | 十六进制 |
---|---|---|---|
1 | 1 | 1 | 1 |
10 | 2 | 2 | 2 |
11 | 3 | 3 | 3 |
100 | 4 | 4 | 4 |
101 | 5 | 5 | 5 |
110 | 6 | 6 | 6 |
111 | 7 | 7 | 7 |
1000 | 10 | 8 | 8 |
1001 | 11 | 9 | 9 |
1010 | 12 | 10 | a |
1011 | 13 | 11 | b |
1100 | 14 | 12 | c |
1101 | 15 | 13 | d |
1110 | 16 | 14 | e |
1111 | 17 | 15 | f |
10000 | 20 | 16 | 10 |
二、文件操作(补充)
# 打开文件 f = open('要打开的文件路径',mode='r/w/a',encoding='文件原来写入时定义的编码') # 操作 data = f.read() # 读取文件的内容到内存(全部) f.write('要写入的内容') # 关闭文件 f.close()
# 示例一 : 一般用于文字写入。 f = open('a.txt',mode='w',encoding='utf-8') # a. 将 “你好” 根据encoding指定的编码转换成: # “你好” --> 10001000 10001000 10001000 10001000 10001000 10001000 # b. 将二进制写入到文件中。 f.write('你好') # w打开文件,则write传入字符串 f.close() # 示例二:一般用于图片/音频/视频/未知编码 f = open('a.txt',mode='wb') # f.write('你好') # wb打开文件,则write传入的是二进制,但‘你好’是字符串不是二进制,需要转换后再写入。 # 1. 把要写入的字符串转换成二进制 data = "我好困" content = data.encode('utf-8') # 将字符串按照utf-8编码转换成二进制 # 2. 再将二进制写到文件中 f.write(content) # wb打开文件,则write传入的是 二进制 f.close()
1.文件操作
- 模式
- r / w / a 【只读只写字符串】 *****
- r+ / w+ / a+ 【可读可写字符串】
- rb / wb /ab 【只读只写二进制】 *****
- 字符串转换 “二进制”:
v = "你好"
data = v.encode('utf-8') - 二进制转换成字符串
v = b'\xe6\x88\x91\xe5\xa5\xbd\xe5\x9b\xb0'
data = v.decode('utf-8')
- 字符串转换 “二进制”:
- r+b / w+b / a+b 【可读可写二进制】
-
seek(光标字节位置),无论模式是否带b,都是按照字节进行处理。
obj = open('a.txt',mode='r',encoding='utf-8') obj.seek(3) # 跳转到指定字节位置 data = obj.read() obj.close() print(data) obj = open('a.txt',mode='rb') obj.seek(3) # 跳转到指定字节位置 data = obj.read() obj.close() print(data)
-
tell(), 获取光标当前所在的字节位置
obj = open('a.txt',mode='rb') # obj.seek(3) # 跳转到指定字节位置 obj.read() data = obj.tell() print(data) obj.close()
-
flush,强制将内存中的数据写入到硬盘
v = open('a.txt',mode='a',encoding='utf-8') while true: val = input('请输入:') v.write(val) v.flush() v.close()
2.关闭文件操作
文艺青年
v = open('a.txt',mode='a',encoding='utf-8') v.close()
二逼
with open('a.txt',mode='a',encoding='utf-8') as v: data = v.read() # 缩进中的代码执行完毕后,自动关闭文件
3.文件内容的修改
with open('a.txt',mode='r',encoding='utf-8') as f1: data = f1.read() new_data = data.replace('飞洒','666') with open('a.txt',mode='w',encoding='utf-8') as f1: data = f1.write(new_data)
大文件修改
f1 = open('a.txt',mode='r',encoding='utf-8') f2 = open('b.txt',mode='w',encoding='utf-8') for line in f1: new_line = line.replace('阿斯','死啊') f2.write(new_line) f1.close() f2.close()
with open('a.txt',mode='r',encoding='utf-8') as f1, open('c.txt',mode='w',encoding='utf-8') as f2: for line in f1: new_line = line.replace('阿斯', '死啊') f2.write(new_line)