2016-10-08 15 views
0

У меня есть видео файл, и мне нужно разделить его на несколько файлов меньшего размера 256Кб и сохранить все файлы имена в текстовом файле, то мне нужно прочитать все небольшие файлы и объединяет их в исходный файл.Как разделить файл на несколько файлов с помощью питона

это можно сделать в python и как?

+0

Наверное да. Что-нибудь конкретное? –

+1

Возможно с Python, но существуют программы, которые уже делают это для вас: 'split' и' cat' –

+0

Нужны ли маленькие файлы для чтения в виде видео? Если вы просто разделите большой файл на куски, их не будет. –

ответ

2

Первый удар в расщеплении:

input_file = open(input_filename, 'rb') 
blocksize = 4096 
chunksize = 1024 * 256 
buf = None 
chunk_num = 0 
current_read = 0 
output_filename = 'output-chunk-{:04d}'.format(chunk_num) 
output_file = open(output_filename, 'wb') 
while buf is None or len(buf) > 0: 
    buf = input_file.read(blocksize) 
    current_read += len(buf) 
    output_file.write(buf) 
    if chunksize <= current_read: 
     output_file.close() 
     current_read = 0 
     chunk_num += 1 
     output_filename = 'output-chunk-{:04d}'.format(chunk_num) 
     output_file = open(output_filename, 'wb') 
output_file.close() 
input_file.close() 

Это может заставить вас там наполовину; при необходимости адаптироваться.

Слияния:

blocksize = 4096 
chunk_num = 0 
input_filename = 'output-chunk-{:04d}'.format(chunk_num) 
output_filename = 'reconstructed.bin' 
output_file = open(output_filename, 'wb') 
while True: 
    try: 
     input_file = open(input_filename, 'rb') 
    except IOError: 
     break 
    buf = None 
    while buf is None or len(buf) > 0: 
     buf = input_file.read(blocksize) 
     output_file.write(buf) 
    input_file.close() 
    chunk_num += 1 
    input_filename = 'output-chunk-{:04d}'.format(chunk_num) 
output_file.close() 
+0

Спасибо за ваш ответ, и он отлично работает, но как я могу читать все файлы и объединять их в исходный файл? –

+0

Um, 'cat output-chunk- *> восстановленный.bin'. – wildwilhelm

+0

извините, я не могу понять ваш комментарий! Как я могу слить их с помощью python? –

Смежные вопросы