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