запись нескольких звуковых файлов в один файл в Python - PullRequest
1 голос
/ 14 мая 2011

У меня проблема.У меня есть три звуковых файла, например, a.wav, b.wav и c.wav.Я хочу записать их в один файл, например all.xmv (расширение также может быть другим), и когда мне нужно, я хочу извлечь один из них и воспроизвести его (например, я хочу воспроизвести a.wav и извлечьэто форма all.xmv).

Как я могу сделать это в Python.Я слышал, что в Delphi есть функция с именем blockwrite, и она делает то, что я хочу.Есть ли в Python функция, подобная blockwrite в Delphi, или как я могу записать эти файлы и воспроизвести их?

Ответы [ 2 ]

4 голосов
/ 14 мая 2011

Подойдут ли вам стандартные файлы tar / zip?

http://docs.python.org/library/zipfile.html

http://docs.python.org/library/tarfile.html

0 голосов
/ 14 мая 2011

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

Пусть paths - это список файлов, которые должны быть объединены:

import io
import os

offsets = [] # the offsets that should be kept for later file navigation
last_offset = 0

fout = io.FileIO(out_path, 'w')
for path in paths:
    f = io.FileIO(path) # stream IO
    fout.write(f.read())
    f.close()
    last_offset += os.path.getsize(path)
    offsets.append(last_offset)       
fout.close()

# Pseudo: write the offsets to separate file e.g. by pickling
# ...

# reading the data, given that offsets[] list is available
file_ID = 10                   # e.g. you need to read 10th file
f = io.FileIO(path)    
f.seek(offsets[file_ID - 1])   # seek to required position 
read_size = offsets[filed_ID] - offsets[file_ID - 1]  # get the file size
data = f.read(read_size)       # here we are! 
f.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...