1、可以在mode参数中添加'b'字符。所有适合文件对象的相同方法。然而,每种方法都希望并返回一个bytes对象。
1
2
3
|
>>> with open (`dog_breeds.txt`, 'rb' ) as reader:
>>> print (reader.readline())
b 'Pug\n'
|
2、当打开文件并单独阅读这些字节时,可以看到它确实是一个png文件:
1
2
3
4
5
6
7
8
9
10
11
|
>>> with open ( 'jack_russell.png' , 'rb' ) as byte_reader:
>>> print (byte_reader.read( 1 ))
>>> print (byte_reader.read( 3 ))
>>> print (byte_reader.read( 2 ))
>>> print (byte_reader.read( 1 ))
>>> print (byte_reader.read( 1 ))
b '\x89'
b 'PNG'
b '\r\n'
b '\x1a'
b '\n'
|
知识点扩展:
读取文件的字节流数据,将其转换为十六进制数据
1
2
3
4
5
6
7
8
9
10
11
12
|
def read_file():
with open ( './flag.zip' , 'rb' ) as file_byte:
file_hex = file_byte.read(). hex ()
print (file_hex)
write_file(file_hex)
def write_file(file_hex):
with open ( 'new.txt' , 'w' ) as new_file:
new_file.write(file_hex)
if __name__ = = '__main__' :
read_file()
|
读取文件的字节流数据,将其编码为base64并输出
1
2
3
4
5
6
7
8
9
|
import base64
def read_file():
with open ( './flag.zip' , 'rb' ) as file_byte:
file_base64 = base64.b64encode(file_byte.read())
print (file_base64)
if __name__ = = '__main__' :
read_file()
|
将十六进制文件转化为字节流文件写入
1
2
3
4
5
6
7
8
9
10
|
import struct
a = open ( "str.txt" , "r" ) #十六进制数据文件
lines = a.read()
res = [lines[i:i + 2 ] for i in range ( 0 , len (lines), 2 )]
with open ( "xxx.xxx" , "wb" ) as f:
for i in res:
s = struct.pack( 'B' , int (i, 16 ))
f.write(s)
|
以上就是python用字节处理文件实例讲解的详细内容,更多关于python使用字节处理文件的资料请关注服务器之家其它相关文章!
原文链接:https://www.py.cn/jishu/jichu/29107.html