錛堝ぇ鍒板唴瀛樿涓嶄笅錛?/strong>錛?br />
閾捐〃涓殑struct 緇撴瀯涓?:
>> 鎺掑簭灞炴ф枃浠跺綊灞?br />
>> 鎺掑簭灞炴ф暣鏉℃暟鎹湪鏂囦歡涓殑 璧峰浣嶇疆 - 緇撴潫浣嶇疆
>> 鍦ㄦ帓搴忎腑鐨勬帓浣?錛?閾捐〃緇撴瀯,鍙鍏ユ瘮鑷繁灝忕殑 灞炴у湪姝ら摼琛ㄧ殑浣嶇疆 錛?br />
姣斿 :
1. 鏂囦歡1鍐呭 =>
璇存槑:
瀹屾暣鏁版嵁鎻忚堪 : 姝ゆ暟鎹湪鏂囦歡涓殑 璧峰浣嶇疆錛堝綋鐒舵槸閫氳繃紼嬪簭鍙栧緱鐨勶紝榪欎負浜嗘柟渚挎垜鏍囧嚭錛?/strong>
..c
. 0 - 22
..a
. 23 - 55
..b
. 56- 76
..d
. 77 - 130
..f
. 131 - 220
..e
. 221 - 243
2. 鏁版嵁緇撴瀯棰勫紑絀洪棿 100 byte
3. 鏂囦歡瀛樺偍鍦ㄦ弿榪?: # 閾捐〃鎺掑簭鎴戝氨涓嶄粙緇嶄簡錛屾暟鎹粨鏋勭殑鏈鍩烘湰鎶鑳斤紝淇敼鏁版嵁緇撴瀯涓殑姣旇嚜宸卞皬鐨勬寚鍚?
鎴戣繖灝辯粰鍑虹粨鏋?br />
{ /tmp/鏂囦歡1, 0-22 , 300 } #璇存槑 c 錛?鍦ㄩ摼琛ㄤ綅緗?0
{ /tmp/鏂囦歡1, 23-55 , 200 } # a 錛?100
{ /tmp/鏂囦歡1, 56-76 , 0 } # b : 200
{ /tmp/鏂囦歡1, 77-130 , 500 } # d : 300
{ /tmp/鏂囦歡1, 131-220 , } # f : 400
{ /tmp/鏂囦歡1, 221-243 , 400 } # e : 500
4. 鍊掑彊杈撳嚭 鐢卞皬鍒板埌
鍋囪棰勫瓨鏈灝?涓?nbsp; 200 閾捐〃浣嶇疆
鎵懼嚭 浣跨敤 open /tmp/鏂囦歡1
騫朵嬌鐢?seek 鏂囦歡娓告爣 瀹氫綅 23-55 鍙栧嚭 ..a...
鏍規嵁 閾捐〃涓?200 鍒?seek 56 76 鍙栧嚭 ..b...
絳夌瓑
褰撶劧 涓婇潰
鏁版嵁緇撴瀯浣犲彲浠ヤ嬌鐢?鍙屽悜閾捐〃錛?btree , 綰㈤粦 , 鏂愭嘗閭e銆傘傘傦紙 鏁版嵁緇撴瀯緇堜簬鎰熻鏈夌敤浜嗭紝涓嶆瀴璐規垜鑰冪殑杞瘉鍟婏紒錛?br />
閫氳繃璇存槑錛屾垜榪?緇欏ぇ瀹舵彁渚涗釜 鍙兘闇瑕佺殑 鎶鏈粏鑺?(py),涓嶈凍涔嬪 嬈㈣繋鎷嶇爾錛侊紒
1. 浜岃繘鍒舵枃浠?緇撴瀯鍖?鍐欙紝淇敼
#鎸囧畾淇敼 190 byte 澶勭殑 鍐呭
import os
from struct import *
fd = os.open( "pack1.txt", os.O_RDWR|os.O_CREAT )
ss = pack('ii11s', 3, 4, 'google')
os.lseek(fs, len(ss)*10, 0)
os.write(fs,ss)
os.fsync(fs)
#os.close( fs )
2. seek 鎸囧畾浣嶇疆緇撴瀯鍖栬鍙?br />
from struct import *
file_object = open('pack1.txt', 'rb')
def ts(si,ss=len(ss)):
file_object.seek(si*ss)
chunk = file_object.read(ss)
a,b,c=unpack('ii11s', chunk )
print a,b,c
ts(10)
#杈撳嚭 3 4 google
1. 鍏朵粬璇█鐨?浣跨敤
struct 緇撴瀯瀹氫箟 ,鍦?python 涓?浣跨敤 struct 鍖咃紝榪欐牱搴忓垪鍑烘潵鐨勬暟鎹埌鏂囦歡涓叾浠栬璦涔熷彲浠ヤ嬌鐢?
鍙傝? http://www.pythonid.com/bbs/archiver/?tid-285.html
pack1.py
from struct import *
# i 涓?int錛?錛?nbsp; 11s 涓洪鐣?11 浣嶇疆 鐨?string
# 姝ゆ暟鎹被鍨?涓?19 byte ss = pack('ii11s', 1, 2, 'hello world')
f = open("pack1.txt", "wb")
f.write(ss)
f.close()
涓婇潰鐨勪唬鐮佸線C鐨勭粨鏋勪腑鍐欏叆鏁版嵁錛岀粨鏋勫寘鎷袱涓暣鍨嬪拰涓涓瓧絎︿覆銆?br />
pack1.c
#include <stdio.h>
#include <string.h>
struct AA
{
int a;
int b;
char c[64];
};
int main()
{
struct AA aa;
FILE *fp;
int size, readsize;
memset(&aa, 0, sizeof(struct AA));
fp = fopen("pack1.txt", "rb");
if (NULL == fp) {
printf("open file error!"n");
return 0;
}
readsize = sizeof(struct AA);
printf("readsize: %d"n", readsize);
size = fread(&aa, 1, readsize, fp);
printf("read: %d"n", size);
printf("a=%d, b=%d, c=%s"n", aa.a, aa.b, aa.c);
fclose(fp);
return 0;
}
緇撴灉杈撳嚭:
C:"Documents and Settings"lky"妗岄潰"dataStructure>a
readsize: 72
read: 57
a=1, b=2, c=hello word
鏈鍚庣綏鍡︿笅錛?/strong>
鑳界敤鏁版嵁緇撴瀯浜嗭紝寰堝涓滆タ閮藉彲浠ユ牴鎹嚜宸遍昏緫瀹氬埗 瀛樺偍寰堟柟渚?銆?涓嶅啀鍙?鍏崇郴鏁版嵁搴?, key 鏁版嵁搴?鎴?mapreduce 鐨勯檺鍒?
鍙傝?
http://docs.python.org/library/struct.html#module-struct #瀹樻柟struct 鍖?璇存槑
http://blog.csdn.net/JGood/archive/2009/06/22/4290158.aspx # 浣跨敤 struct 鐨勫墠杈堢暀涓嬬殑
http://www.tutorialspoint.com/python/os_lseek.htm #涓涓皬demo
Python澶╁ぉ緹庡懗(17) - open璇誨啓鏂囦歡

]]>