python讀取二進制文件
『壹』 如何用python生成和讀取二進制文件
可以使用numpy.fromfile(),也可以使用open(filename,
'rb'),其中的'b'就是二進制的意思,然後使用文件類型的read方法,讀取一些字zd節,再用struct.unpack()方法來解析二進制。
第一種方法是一次性讀入文件(或文件的內前多少個連續位元組)到一個數組中,因此,靈活性差。
第二容種方法靈活性很高,可以讀取任意位置(使用文件的seek()方法跳躍位置)的二進制數據,再使用struct.unpack()方法來進行各種二進制解析。
提示:二進制文件是不保留存儲方式的數據格式,因此,讀二進制文件時應該知道二進制文件的存儲格式。
『貳』 python關於二進制文件讀取的問題
argument for 's' must be a bytes object
參數必須是bytes object
『叄』 python 怎樣讀取visual c++二進制文件格式
1.python 二進制文件的讀寫
只討論二進制文件的讀寫。
以二進制的形式打開文件
with open(filename , 'wb') as fd :
#do with fd
fd.write(strobject)#二進制strobject寫入文件
fd.read(byte_len)#讀取byte_len位元組數據
wb:表示以二進制寫的方式打開文件
rb :表示以二進制讀的方式打開文件
2.關於進制的轉換
需要使用到struct進行打包成二進制字元串或者相應的解包成元組。
#根據format形式,把後面的變數v1,v2,...打包成位元組對象形式
byte_objects = struct.pack(format,v1,v2,...)
#根據format形式,從buffer中解包出數據,返回值的形式是元組
value_tuple = struct.unpack(format,buffer)
3.讀寫幾種數據類型的例子
#寫入文件
with open('test.data','wb') as fd:
i = 1
bi = struct.pack('i',i) #'i'表示對int類型進行打包
fd.write(bi)
f = 2.1
bf = struct.pack('f',f) #'f'表示對float類型進行打包
fd.write(bf)
d = 3.1
bd = struct.pack('d',d) #'d'表示對double類型進行打包
fd.write(bd)
l = 4L
bl = struct.pack('l',l)#'l'表示對long類型進行打包
fd.write(bl)
#讀取文件
with open('test.data','rb') as fd:
byte_len = 4
bi = fd.read(byte_len) #讀取int類型的4個位元組的二進制數據
print struct.unpack('i',bi) #解壓成原來的int類型
bf = fd.read(byte_len) #讀取float類型的4個位元組的二進制數據
print struct.unpack('f',bf) #解壓成原來的float類型
byte_len = 8
bd = fd.read(byte_len) #讀取double類型的8個位元組的二進制數據
print struct.unpack('d',bd) #解壓成原來的double類型
bl = fd.read(byte_len) #讀取long類型的8個位元組的二進制數據
print struct.unpack('l',bl)#解壓成原來的long類型
關於C/C++裡面的數據類型在Python裡面對應的數據類型以及佔用的位元組大小,參考下面的網站。
https://docs.python.org/3/library/struct.html#format-characters
4.測試關於c++讀去python生成的文件
/**c++ ifstream**/
void readifstream(const char* filename){
cout << "ifstream " << endl;
ifstream ifs(filename,ifstream::binary);
if(!ifs){
cerr << "open file error " << endl;
exit(0);
}
int i;
float f;
double d;
long l;
ifs.read((char*)&i,sizeof(i));
ifs.read((char*)&f,sizeof(f));
ifs.read((char*)&d,sizeof(d));
ifs.read((char*)&l,sizeof(l));
ifs.close();
cout <<"i="<< i << " f="<< f <<" d="<< d <<" l=" << l << endl;
cout << "==============cout======================" << endl;
}
/**c FILE*/
void readFILE(const char* filename){
printf("readFILE\n");
FILE * fid = fopen(filename,"rb");
if(!fid){
perror("open file error \n");
exit(0);
}
const int size = 1;
int i;
float f;
double d;
long l;
fread((char*)&i,sizeof(i),size,fid);
fread((char*)&f,sizeof(f),size,fid);
fread((char*)&d,sizeof(d),size,fid);
fread((char*)&l,sizeof(l),size,fid);
fclose(fid);
printf("i=%d f=%.2f d=%.2lf l=%ld\n",i,f,d,l);
printf( "================printf====================\n");
}
『肆』 Python中的文件讀寫-理論知識
Python處理兩種不同類型的文件:二進制文件和文本文件。了解兩者之間的差異很重要,因為它們的處理方式不同。
二進制文件
在正常計算機使用期間使用的大多數文件實際上是二進制文件,而不是文本。比如:Microsoft Word .doc文件實際上是一個二進制文件,即使它只有文本。
二進制文件的其他示例包括:
圖像文件,包括.jpg,.png,.bmp,.gif,等。
文件,包括.doc,.xls,.pdf或者其他文件。
那是因為這些文件都有特殊處理的要求,需要特定類型的軟體來打開它。例如,您需要Excel來打開.xls文件,並使用資料庫程序來打開.sqlite文件。
文本文件
一方面,沒有特定的編碼,可以通過沒有任何特殊處理的標准文本編輯器打開。但是,每個文本文件都必須遵守一組規則:
文本文件必須是可讀的。他們可以(並且經常會)包含許多特殊編碼,尤其是在HTML或其他標記語言中,但您仍然可以說出它的含義
文本文件中的數據按行組織。在大多數情況下,每一行都是一個獨特的元素,無論是指令行還是命令。
此外,文本文件在每行的末尾都有一個看不見的字元,這使文本編輯器知道應該有一個新行。通過編程與這些文件交互時,您可以利用該字元。在Python中,它用「 n」 表示。
在哪裡可以找到Python的文件I / O工具
在Python中工作時,您不必擔心導入任何特定的外部庫來處理文件。Python附帶有「文件庫」,文件I / O工具和實用程序是核心語言的內置部分。
但是在其他語言(如C ++)中,要處理文件,您必須通過包含正確的頭文件來啟用文件I / O工具#include <fstream>。如果您使用java編寫代碼,則需要使用該import java.io.*語句。
使用Python,就沒有必要這樣做,這是因為Python有一組內置函數,可以處理讀取和寫入文件所需的所有內容。
『伍』 python 二進制讀取文件 如何知道真實的讀取位元組大小
read(100)讀取的結果保存在buff,buff是位元組類型
用len(buff)可以返回讀取位元組的實際長度。
『陸』 python pdf二進制讀取問題
可以使用numpy.fromfile(),也可以使用open(filename, 'rb'),其中的'b'就是二進制的意思,然後使用文件類型的read方法,讀取一些位元組,再用struct.unpack()方法來解析二進制。
第一種方法是一次性讀入文件(或文件的前多少個連續位元組)到一個數組中,因此,靈活性差。
第二種方法靈活性很高,可以讀取任意位置(使用文件的seek()方法跳躍位置)的二進制數據,再使用struct.unpack()方法來進行各種二進制解析。
提示:二進制文件是不保留存儲方式的數據格式,因此,讀二進制文件時應該知道二進制文件的存儲格式。
『柒』 如何用python提取二進制文件中的字元串
python本身並沒有對二進制進行支持,不過提供了一個模塊來彌補,就是struct模塊。
python沒有二進制類型,但可以存儲二進制類型的數據,就是用string字元串類型來存儲二進制數據,這也沒關系,因為string是以1個位元組為單位的。
『捌』 在python中如何從二進制文件中讀取信息
你是指讀入二進制文件吧?
可以使用numpy.fromfile(),也可以使用open(filename, 'rb'),其中的'b'就是二進制的意思,然後使用文件類型的read方法,讀取一些位元組,再用struct.unpack()方法來解析二進制。
第一種方法是一次性讀入文件(或文件的前多少個連續位元組)到一個數組中,因此,靈活性差。
第二種方法靈活性很高,可以讀取任意位置(使用文件的seek()方法跳躍位置)的二進制數據,再使用struct.unpack()方法來進行各種二進制解析。
提示:二進制文件是不保留存儲方式的數據格式,因此,讀二進制文件時應該知道二進制文件的存儲格式。
『玖』 如何能夠使用python3讀取二進制的.bin文件
您好。 將其導入ultra edit,裡面有導出二進制文件選項 有各最簡單的方法,windows其實自帶了一個這樣的工具exe2bin.exe在運行里輸入cmd打開msdos方式,裡面輸入 c:\>exe2bin /? 就可以查看一下這個命令的方式,比如 c:\>exe2bin c:\a.exe b.bin...
『拾』 python二進制文件的讀取與寫入可以分別使用 和 方法
可以使用read方法和readline方法