1.基本を習得
binファイル:オープン関数はオブジェクトファイルを作成します
ファイルを開くモード:例:オープン( "file.txtは"、 'R')
モード説明
rは、読み取り専用モードでファイルを開きます。ポインタファイルは、ファイルの先頭に配置されます。これがデフォルトのモードです。
RBは、読み取り専用形式のバイナリファイルを開きます。ファイルポインタはファイルの先頭に配置されます。これがデフォルトのモードです。
R +は、読み取りと書き込みのためにファイルを開きます。ファイルポインタはファイルの先頭に配置されます。
RB +は、バイナリ形式の読み込みと書き込みのためにファイルを開きます。ファイルポインタはファイルの先頭に配置されます。
wは書き込み専用のファイルを開きます。ファイルがすでに存在する場合、それは上書きされます。ファイルが存在しない場合は、新しいファイルを作成します。
WBはバイナリ形式で記述するためのファイルを開きます。ファイルがすでに存在する場合、それは上書きされます。ファイルが存在しない場合は、新しいファイルを作成します。
W +読み書き用のファイルを開きます。ファイルがすでに存在する場合、それは上書きされます。ファイルが存在しない場合は、新しいファイルを作成します。
WB +は、バイナリ形式の読み込みと書き込みのためにファイルを開きます。ファイルがすでに存在する場合、それは上書きされます。ファイルが存在しない場合は、新しいファイルを作成します。
追記用のファイルを開きます。ファイルが既に存在する場合、ファイルポインタはファイルの末尾に配置されます。言い換えれば、新しいコンテンツが既存のコンテンツの後に書き込まれます。ファイルが存在しない場合は、書き込み用に新しいファイルを作成します。
ABは、追加のバイナリ形式のファイルを開きます。ファイルが既に存在する場合、ファイルポインタはファイルの末尾に配置されます。言い換えれば、新しいコンテンツが既存のコンテンツの後に書き込まれます。ファイルが存在しない場合は、書き込み用に新しいファイルを作成します。
+読み書き用のファイルを開きます。ファイルが既に存在する場合、ファイルポインタはファイルの末尾に配置されます。ファイルを開いたときにはモードを追加します。ファイルが存在しない場合は、読み取りおよび書き込み用の新しいファイルを作成します。
AB +は、追加のバイナリ形式のファイルを開きます。ファイルが既に存在する場合、ファイルポインタはファイルの末尾に配置されます。ファイルが存在しない場合は、読み取りおよび書き込み用の新しいファイルを作成します。
Tのデフォルトのテキスト
Xの書き込みモードでは、ファイルが存在する場合、それはエラーになり、新しいファイルを作成します。
Bバイナリモード
+(読み取りおよび書き込み)が更新されたファイルを開きます。
Pythonの構造体のbinファイルライブラリ読み書きプロパティを
= struct.pack( 'B'、$ 00)
B = struct.unpack( 'B'、A)
これはああでPythonの外観をコンパイルするために使用することができます!(あなたが理解して)
1. struct.packのPythonの値は、文字ベースのフォーマットのために、Pythonのないバイト(バイト)タイプなぜなら、(文字列に変換しました
ここで、文字列はバイトストリームまたはバイト配列)として理解することができます。その関数のプロトタイプは次のとおりです。struct.pack(FMT、V1、V2、...)、
FMTは、フォーマット文字列のパラメータであり、以下でフォーマット文字列に関する情報が導入されます。V1、V2、...変換するPythonの値を表します。
2. struct.unpackは仕事のpythonへのデータ型のバイトストリームのために、struct.packのコントラストと一致しません。それの
関数のプロトタイプ:struct.unpack(FMT、文字列)、この関数はタプルを返します。
バイトのPythonのフォーマットCタイプ番号
値なし×1パッドバイト
長さ1のCの文字列
B signed char型整数1
Bはunsigned char整数1
?_Bool BOOL 1
H短整数2
H符号なし短整数2
私は4の整数int型
I unsigned int型の整数またはlong 4
L長整数4
4 unsigned long long型L
8長い長い長いQ
8 Q符号なしlong long longの
Fフロートフロート4
Dダブルフロート8
S文字[]の文字列1
Pチャー[]の文字列1
Pボイド*長いです
これは、C言語の速いバイトアライメント、最後のサイズの選択に似ています
例:(後ろの命令)
= struct.pack(」
B = struct.pack(「> I」、0x12345678の)#は、ストレージの大端部によれば、4つにバイト
文字バイトオーダーサイズとアライメント
@ネイティブネイティブは4つのバイトを働きかけ
オリジナルバイト=ネイティブ標準数
<標準オリジナルリトルエンディアンのバイト数
元バイトの>ビッグエンディアン規格番号
!ネットワーク(=ビッグエンディアン)、元バイトの標準数
2.ビンやファイルモードを開きます
ファイル=オープン(file_nameに、 'WB')#は、バイナリモードを書きます
ファイル=オープン(file_nameに、 'RB')#バイナリリードモード
ファイル=オープン(file_nameに、 'AB')#補完バイナリ書き込みモード
3. binファイルを読み込みます
輸入構造体
輸入OS
デフのReadFile():
ファイルパス= '7.bin'
binfile =オープン(ファイルパス、 'RB')#オープンバイナリ
サイズ= os.path.getsize(ファイルパス)#の取得ファイルのサイズ
範囲(サイズ)での私のために:
すべての1バイトのデータ= binfile.read(1)#出力
印刷(データ)
binfile.close()
__name__ == '__main__' の場合:
ReadFile()
次のようにファイルを7.bin
4. binファイルの書き込み
輸入構造体
輸入OS
デフのWriteFile():
ファイルパス= '7.bin'
データ= 123
binfile =オープン(ファイルパス、「AB +」)位(完了を追加)バイナリファイルを開き
= struct.pack( 'B'、データ)
binfile.write(A)
binfile.close()
__name__ == '__main__' の場合:
WriteFile関数()
7.binファイル
レンダリング
5.ビンサイズファイル書き込み終了
輸入構造体
FILE_NAME = "5.bin"
デフBig_little_endian():
ファイル=オープン(file_nameに、 'WB')
= struct.pack( 'I' は、0x12345678の)#は、通常、4つにバイト
B = struct.pack(」
C = struct.pack(「> I」は、0x12345678の)#は、ストレージの大端部によれば、4つにバイト
file.write(A)
file.write(B)
file.write(C)
file.close()
__name__ == '__main__' の場合:
Big_little_endian()
0〜6 binファイルを書きます
輸入構造体
bin_file_1 = "1.bin"
デフwrite0x00():
ファイル=オープン(bin_file_1、 'WB')
私の範囲内(1,0xFF)のために:
データ= struct.pack( 'B'、$ 00)#0写
file.write(データ)
file.close
__name__ == '__main__' の場合:
write0x00()
レンダリング:
7.書き込みbinファイル1
輸入構造体
bin_file_2 = "2.bin"
デフwrite0xFF():
ファイル=オープン(bin_file_2、 'WB')
for i in range(0,0xFF):
data = struct.pack('B',0xFF) #写1
file.write(data)
file.close
if __name__ == '__main__':
write0x00()
效果图: 无锡正规妇科医院 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文件写入字符串
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:
データ= struct.pack( 'B'、I)
file.write(データ)
file.close
__name__ == '__main__' の場合:
WriteStringは()
レンダリング: