1. 基礎(chǔ)知識(shí)掌握
創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的建甌網(wǎng)站建設(shè)公司,建甌接單;提供做網(wǎng)站、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行建甌網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
bin文件: open函數(shù)創(chuàng)建file對(duì)象
打開(kāi)文件的不同模式:例子:open(“file.txt”,‘r’)
模式 描述
r 以只讀方式打開(kāi)文件。文件的指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。
rb 以二進(jìn)制格式打開(kāi)一個(gè)文件用于只讀。文件指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。
r+ 打開(kāi)一個(gè)文件用于讀寫(xiě)。文件指針將會(huì)放在文件的開(kāi)頭。
rb+ 以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫(xiě)。文件指針將會(huì)放在文件的開(kāi)頭。
w 打開(kāi)一個(gè)文件只用于寫(xiě)入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb 以二進(jìn)制格式打開(kāi)一個(gè)文件只用于寫(xiě)入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
w+ 打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb+ 以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
a 打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。
ab 以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。
a+ 打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。文件打開(kāi)時(shí)會(huì)是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫(xiě)。
ab+ 以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫(xiě)。
t 文本默認(rèn)
x 寫(xiě)模式,新建一個(gè)文件,如果該文件存在,則會(huì)報(bào)錯(cuò)。
b 二進(jìn)制模式
+ 打開(kāi)一個(gè)文件進(jìn)行更新(可讀可寫(xiě))。
bin文件的python struct庫(kù) 讀寫(xiě)屬性
a = struct.pack('B',0x00)
b = struct.unpack(‘B’,a)
這塊可以使用python編譯的看一下哦!(你就明白了)
1. struct.pack用于將Python的值根據(jù)格式符,轉(zhuǎn)換為字符串(因?yàn)镻ython中沒(méi)有字節(jié)(Byte)類(lèi)型,
可以把這里的字符串理解為字節(jié)流,或字節(jié)數(shù)組)。其函數(shù)原型為:struct.pack(fmt, v1, v2, ...),
參數(shù)fmt是格式字符串,關(guān)于格式字符串的相關(guān)信息在下面有所介紹。v1, v2, ...表示要轉(zhuǎn)換的python值。
2. struct.unpack做的工作剛好與struct.pack相反,用于將字節(jié)流轉(zhuǎn)換成python數(shù)據(jù)類(lèi)型。它的
函數(shù)原型為:struct.unpack(fmt, string),該函數(shù)返回一個(gè)元組
Format C Type Python 字節(jié)數(shù)
x pad byte no value 1
c char string of length 1 1
b signed char integer 1
B unsigned char integer 1
? _Bool bool 1
h short integer 2
H unsigned short integer 2
i int integer 4
I unsigned int integer or long 4
l long integer 4
L unsigned long long 4
q long long long 8
Q unsigned long long long 8
f float float 4
d double float 8
s char[] string 1
p char[] string 1
P void * long
這快就類(lèi)似于C語(yǔ)言中的字節(jié)對(duì)齊,大小端的選擇
例子:(后面有說(shuō)明)
a = struct.pack('
b = struct.pack('>I',0x12345678) #四字節(jié)存入,按大端存儲(chǔ)
Character Byte order Size and alignment
@ native native 湊夠4個(gè)字節(jié)
= native standard 按原字節(jié)數(shù)
< little-endian standard 按原字節(jié)數(shù)
> big-endian standard 按原字節(jié)數(shù)
! network (= big-endian) standard 按原字節(jié)數(shù)
2. bin文件的打開(kāi)和模式
file = open(file_name,'wb')#二進(jìn)制寫(xiě)模式
file = open(file_name,'rb')#二進(jìn)制讀模式
file = open(file_name,'ab')#二進(jìn)制補(bǔ)充讀寫(xiě)模式
3. bin文件讀取
import struct
import os
def ReadFile():
filepath='7.bin'
binfile = open(filepath, 'rb') #打開(kāi)二進(jìn)制文件
size = os.path.getsize(filepath) #獲得文件大小
for i in range(size):
data = binfile.read(1) #每次輸出一個(gè)字節(jié)
print(data)
binfile.close()
if __name__ == '__main__':
ReadFile()
7.bin文件如下
4. bin文件寫(xiě)入
import struct
import os
def WriteFile():
filepath='7.bin'
data = 123
binfile = open(filepath, 'ab+') #打開(kāi)二進(jìn)制文件(追加完成)
a = struct.pack('B',data)
binfile.write(a)
binfile.close()
if __name__ == '__main__':
WriteFile()
7.bin文件
效果圖
5. bin文件的大小端寫(xiě)入
import struct
file_name = "5.bin"
def Big_little_endian():
file = open(file_name,'wb')
a = struct.pack('I',0x12345678) #四字節(jié)存入,正常狀態(tài)
b = struct.pack('
c = struct.pack('>I',0x12345678) #四字節(jié)存入,按大端存儲(chǔ)
file.write(a)
file.write(b)
file.write(c)
file.close()
if __name__ == '__main__':
Big_little_endian()
6. bin文件的寫(xiě)0
import struct
bin_file_1 = "1.bin"
def write0x00():
file = open(bin_file_1,'wb')
for i in range(1,0xFF):
data = struct.pack('B',0x00) #寫(xiě)0
file.write(data)
file.close
if __name__ == '__main__':
write0x00()
效果圖:
7. bin文件的寫(xiě)1
import struct
bin_file_2 = "2.bin"
def write0xFF():
file = open(bin_file_2,'wb')
for i in range(0,0xFF):
data = struct.pack('B',0xFF) #寫(xiě)1
file.write(data)
file.close
if __name__ == '__main__':
write0x00()
效果圖:無(wú)錫正規(guī)婦科醫(yī)院 http://www.jlfukeyy.com/
8. bin文件的合并
1.bin和2.bin合并成merage.bin
import struct
bin_file_1 = "1.bin"
bin_file_2 = "2.bin"
bin_file_merage = "merage.bin"
def merage_bin():
file_merage = open(bin_file_merage,'wb')
file_1 = open(bin_file_1,'rb')
data = file_1.read()
file_merage.write(data)
file_2 = open(bin_file_2,'rb')
data = file_2.read()
file_merage.write(data)
file_1.close()
file_2.close()
file_merage.close()
if __name__ == '__main__':
merage_bin()
效果圖:
9. bin文件寫(xiě)入字符串
import struct
import string
bin_file_1 = "7.bin"
enter = memoryview(b"STARTX") #返回值是元組
def writeString():
file = open(bin_file_1,'wb')
for i in enter:
data = struct.pack('B',i)
file.write(data)
file.close
if __name__ == '__main__':
writeString()
效果圖:
網(wǎng)站標(biāo)題:pythonbin文件處理
路徑分享:http://jinyejixie.com/article36/posssg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、服務(wù)器托管、微信公眾號(hào)、網(wǎng)站導(dǎo)航、Google、網(wǎng)站營(yíng)銷(xiāo)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)