Pythonのbinファイル処理

  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は()

  レンダリング:

  

ここに画像を挿入説明


おすすめ

転載: blog.51cto.com/14335413/2430089