1、可以在mode參數(shù)中添加'b'字符。所有適合文件對(duì)象的相同方法。然而,每種方法都希望并返回一個(gè)bytes對(duì)象。
1
2
3
|
>>> with open (`dog_breeds.txt`, 'rb' ) as reader: >>> print (reader.readline()) b 'Pug\n' |
2、當(dāng)打開(kāi)文件并單獨(dú)閱讀這些字節(jié)時(shí),可以看到它確實(shí)是一個(gè)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' |
知識(shí)點(diǎn)擴(kuò)展:
讀取文件的字節(jié)流數(shù)據(jù),將其轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)
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() |
讀取文件的字節(jié)流數(shù)據(jù),將其編碼為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() |
將十六進(jìn)制文件轉(zhuǎn)化為字節(jié)流文件寫(xiě)入
1
2
3
4
5
6
7
8
9
10
|
import struct a = open ( "str.txt" , "r" ) #十六進(jìn)制數(shù)據(jù)文件 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用字節(jié)處理文件實(shí)例講解的詳細(xì)內(nèi)容,更多關(guān)于python使用字節(jié)處理文件的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!
原文鏈接:https://www.py.cn/jishu/jichu/29107.html