¿Cómo concatenar archivos en Python?

Tengo varios archivos MP3 (entre 40 y 50) que me gustaría concatenar en un solo archivo. ¿Cuál es la mejor manera de hacer esto en Python?

¿Usar el módulo fileinput para recorrer cada línea de cada archivo y escribirlo en un archivo de salida? Externalizar al comando de copy Windows?

Poner los bytes en esos archivos juntos es fácil … sin embargo, no estoy seguro de si eso causará una reproducción continua; creo que podría ocurrir si los archivos usan la misma tasa de bits, pero no estoy seguro.

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

Eso creará un solo archivo “everything.mp3” con todos los bytes de todos los archivos mp3 en C: \ music concatenados juntos.

Si desea pasar los nombres de los archivos en la línea de comandos, puede usar sys.argv[1:] lugar de iglob(...) , etc.

Solo para resumir (y robar de la respuesta de nosklo ), para concatenar dos archivos que haces:

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

Esto es lo mismo que:

 cat file1 file2 > destination 

Hmm No usaré “líneas”. Uso rápido y sucio.

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

😉