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