Frage

Ich habe mehrere (zwischen 40 und 50) von MP3-Dateien, die Ich mag würde in eine Datei verketten. Was ist der beste Weg, dies in Python zu tun?

Verwenden fileinput Modul durch jede Zeile jeder Datei in Schleife und schreibt sie in eine Ausgabedatei? Outsource zu windows copy Befehl?

War es hilfreich?

Lösung

Setzt man die Bytes in diesen Dateien zusammen ist einfach ... aber ich bin nicht sicher, ob das eine kontinuierliche Wiedergabe führen. - Ich denke, es könnte, wenn die Dateien die gleiche Bitrate verwenden, aber ich bin nicht sicher,

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

Das wird eine einzelne "everything.mp3" Datei mit allen Bytes alles MP3-Dateien in C:. \ Music zusammen verketteten

Wenn Sie die Namen der Dateien in der Befehlszeile übergeben wollen, können Sie statt sys.argv[1:] verwenden iglob(...), etc.

Andere Tipps

Just zusammenfassen (und stehlen von nosklo Antwort ), um zwei Dateien verketten Sie tun:

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

Dies ist das gleiche wie:

cat file1 file2 > destination

Hmm. Ich werde nicht „Linien“ verwenden. Quick and dirty Verwendung

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

;)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top