Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I concatenate files in Python?

Tags:

python

file

mp3

I have multiple (between 40 and 50) MP3 files that I'd like to concatenate into one file. What's the best way to do this in Python?

Use fileinput module to loop through each line of each file and write it to an output file? Outsource to windows copy command?

like image 487
Owen Avatar asked Jun 16 '09 13:06

Owen


People also ask

How do you concatenate a file?

To choose the merge option, click the arrow next to the Merge button and select the desired merge option. Once complete, the files are merged. If there are multiple files you want to merge at once, you can select multiple files by holding down the Ctrl and selecting each file you want to merge.


2 Answers

Putting the bytes in those files together is easy... however I am not sure if that will cause a continuous play - I think it might if the files are using the same bitrate, but I'm not sure.

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

That will create a single "everything.mp3" file with all bytes of all mp3 files in C:\music concatenated together.

If you want to pass the names of the files in command line, you can use sys.argv[1:] instead of iglob(...), etc.

like image 127
nosklo Avatar answered Sep 19 '22 05:09

nosklo


Just to summarize (and steal from nosklo's answer), in order to concatenate two files you do:

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

This is the same as:

cat file1 file2 > destination 
like image 20
Nathan Fellman Avatar answered Sep 20 '22 05:09

Nathan Fellman