Bin file merger
09.01.2024
from msvcrt import getch;
import os;

def readBinFileName(filename):
    """function for reading some bin file, returns [bytes , (int)filesize]"""
    while True:
        try:
            binFile = open(filename, 'rb');
        except FileNotFoundError:
            print("Cant find:" + filename);
            print('s - for skip file');
            print('e - for leave program');
            print('other - for try again');

            temp = getch();
            if temp == b's':
                return None;
            elif temp == b'e':
                return 0;
            else:
                continue;

        break;
    
    file_size = os.path.getsize(filename);
    
    result = [binFile.read(file_size), file_size];
    binFile.close();

    return result;

# MAIN -----------------------------------------

descFileName = input('Enter discription file name: ');

try:
    descFile = open(descFileName);
except FileNotFoundError:
    print("Can't find " + descFileName);
    print('Finishing progaram!');
    input();

res_file = open('result.bin', 'wb');
sizes_file = open('sfile.txt' , 'w');

while True:
    binName = descFile.readline();

    if binName == '':
        break;

    file_data = readBinFileName(binName.strip()); 
    if file_data == None:
        continue;
    elif file_data == 0:
        break;
    else:
        res_file.write(file_data[0]);
        sizes_file.writelines(hex(file_data[1]) + '\n');


print('saved as result.bin');
input();
descFile.close();
res_file.close();
sizes_file.close();
# MAIN -----------------------------------------