Pergunta

Eu tenho múltiplos (entre 40 e 50) arquivos MP3 que eu gostaria de concatenar em um arquivo. Qual é a melhor maneira de fazer isso em Python?

Use fileinput módulo para percorrer cada linha de cada arquivo e escrevê-lo a um arquivo de saída? Terceirizar para janelas comando copy ?

Foi útil?

Solução

Colocar os bytes nos arquivos juntos é fácil ... mas eu não tenho certeza se isso vai causar uma reprodução contínua - Acho que pode se os arquivos estão usando a mesma taxa de bits, mas não tenho certeza

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()

Isso vai criar um único arquivo "everything.mp3" com todos os bytes de todos os arquivos de mp3 em C:. \ Música concatenados

Se você quer passar os nomes dos arquivos em linha de comando, você pode usar sys.argv[1:] vez de iglob(...), etc.

Outras dicas

Apenas para resumir (e roubar de resposta de nosklo ), a fim de concatenar dois arquivos que você faz:

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

Este é o mesmo que:

cat file1 file2 > destination

Hmm. Eu não vou usar "linhas". Rápido e uso suja

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

;)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top