mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-22 18:17:02 +08:00
43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
import sys
|
|
|
|
ENTRY_SIZE = 40
|
|
NUM_ENTRIES_IN_CHUNK = 1024*1024
|
|
|
|
def copy(infile, outfile, count, times):
|
|
if times > 1:
|
|
outfile.write(infile.read(count*ENTRY_SIZE)*times)
|
|
else:
|
|
offset = 0
|
|
while offset < count:
|
|
to_read = NUM_ENTRIES_IN_CHUNK if offset + NUM_ENTRIES_IN_CHUNK <= count else count - offset
|
|
|
|
outfile.write(infile.read(to_read*ENTRY_SIZE))
|
|
|
|
offset += NUM_ENTRIES_IN_CHUNK
|
|
|
|
def work():
|
|
filename = sys.argv[1]
|
|
offset = int(sys.argv[2])
|
|
count = int(sys.argv[3])
|
|
times = int(sys.argv[4]) if len(sys.argv) >= 5 else 1
|
|
|
|
with open(filename, 'rb') as infile:
|
|
infile.seek(offset * ENTRY_SIZE)
|
|
filename_parts = filename.split('.')
|
|
out_path = '.'.join(filename_parts[:-1]) + '_' + str(offset) + '_' + str(count) + '_' + str(times) + '.' + filename_parts[-1]
|
|
with open(out_path, 'wb') as outfile:
|
|
copy(infile, outfile, count, times)
|
|
|
|
def show_help():
|
|
print('Usage: python extract_bin.py filename offset count [times]')
|
|
print('filename - the path to the .bin file to process')
|
|
print('offset - the number of sfens to skip')
|
|
print('count - the number of sfens to extract')
|
|
print('times - the number of times to repeat the extracted sfens. Default = 1')
|
|
print('The result is saved in a new file named `filename.stem`_`offset`_`count`_`times`.bin')
|
|
|
|
if len(sys.argv) < 4:
|
|
show_help()
|
|
else:
|
|
work()
|