Мне не ясно, спрашиваете ли вы в целом, как хранить большие целые числа в двоичном файле, или если число 2 ** 10000 является значимым. Если это важно, то использование более килобайта для хранения это, очевидно, очень расточительно (я могу написать это в 8 символов!)
Я приму общий случай, но для начала вам понадобится 10001 бит для хранения 2 ** 10000, а не 10000, поэтому возникает вопрос, что делать с дополнительными 7 битами, необходимыми для заполнения границы байта в файле. Я просто собираюсь хранить его в 10008 бит (1251 байт). В этом решении используется модуль bitstring .
from bitstring import BitArray
fout = open('bignumber', 'wb')
a = BitArray(uint=2**10000, length=10008)
a.tofile(fout)
и прочитать его обратно:
the_number = BitArray(filename='bignumber').uint
Это действительно просто сохраняет номер и ничего больше в файле.