Как объединить файлы в Python? - PullRequest
36 голосов
/ 16 июня 2009

У меня есть несколько (от 40 до 50) файлов MP3, которые я хотел бы объединить в один файл. Какой лучший способ сделать это в Python?

Использовать fileinput модуль для циклического прохождения каждой строки каждого файла и записи его в выходной файл? Аутсорсинг в windows copy команда?

Ответы [ 3 ]

47 голосов
/ 16 июня 2009

Объединить байты в этих файлах легко ... однако я не уверен, что это приведет к непрерывному воспроизведению - я думаю, что это возможно, если файлы используют одинаковый битрейт, но я не уверен.

from glob import iglob
import shutil
import os

PATH = r'C:\music'

destination = open('everything.mp3', 'wb')
for filename in iglob(os.path.join(PATH, '*.mp3')):
    shutil.copyfileobj(open(filename, 'rb'), destination)
destination.close()

Это создаст один файл "everything.mp3" со всеми байтами всех mp3-файлов в C: \ music, соединенных вместе.

Если вы хотите передать имена файлов в командной строке, вы можете использовать sys.argv[1:] вместо iglob(...) и т. Д.

34 голосов
/ 05 октября 2009

Просто подвести итог (и украсть из ответа nosklo ), чтобы объединить два файла, которые вы делаете:

destination = open(outfile,'wb')
shutil.copyfileobj(open(file1,'rb'), destination)
shutil.copyfileobj(open(file2,'rb'), destination)
destination.close()

Это то же самое, что и

cat file1 file2 > destination
5 голосов
/ 16 июня 2009

Хм. Я не буду использовать «линии». Быстрое и грязное использование

outfile.write( file1.read() )
outfile.write( file2.read() )

;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...