Domanda

Ho più file MP3 (tra 40 e 50) che vorrei concatenare in un unico file. Qual è il modo migliore per farlo in Python?

Utilizza il modulo fileinput per scorrere ogni riga di ogni file e scriverlo in un file di output? Esternalizzare a Windows copia comando?

È stato utile?

Soluzione

Mettere insieme i byte in quei file è facile ... tuttavia non sono sicuro che ciò causerà una riproduzione continua - penso che potrebbe accadere se i file utilizzano lo stesso bitrate, ma non sono sicuro.

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

Ciò creerà un unico "tutto.mp3" file con tutti i byte di tutti i file mp3 in C: \ musica concatenati insieme.

Se vuoi passare i nomi dei file nella riga di comando, puoi usare sys.argv [1:] invece di iglob (...) , ecc.

Altri suggerimenti

Solo per riassumere (e rubare dalla la risposta di nosklo ), per concatenare due file che fai:

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

È lo stesso di:

cat file1 file2 > destination

Hmm. Non userò " linee " ;. Uso rapido e sporco

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

;)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top