2009-06-16 10 views
33

複数の(40〜50の)MP3ファイルを1つのファイルに連結したいと思っています。これをPythonで行う最良の方法は何ですか?Pythonでファイルを連結するにはどうすればいいですか?

fileinputモジュールを使用して、各ファイルの各行をループし、出力ファイルに書き込みます。ウィンドウにアウトソーシングcopyコマンド?

+0

http://stackoverflow.com/a/27077437/1157720 – sajjadG

答えて

44

これらのファイルにバイトをまとめるのは簡単です...しかし、それが継続的な再生を引き起こすかどうかはわかりません。ファイルが同じビットレートを使用していると思われますが、わかりません。音楽が一緒に連結\:C内のすべてのmp3ファイルのすべてのバイトを持つ単一の「everything.mp3」ファイルを作成します

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

。あなたは、コマンドラインでのファイルの名前を渡したい場合は

、あなたはsys.argv[1:]代わりのiglob(...)など

+0

あなたはフルネームステップは必要ありませんglobは既に絶対ファイル名を生成しています。 – SilentGhost

+0

グロブの代わりにiglobを使用することができます – SilentGhost

+0

@SilentGhost:ありがとう、固定 – nosklo

5

うーん使用することができます。私は "線"を使用しません。クイックや汚れ使用

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

;)

+0

これは非常に大きなハエでは機能しませんが、 –

+2

はい、わかっています。しかし。私は「素早く汚い」と書いた。つまり、保証なし... – tuergeist

32

だけ要約(およびnosklo's answerから盗むために)、あなたは二つのファイル連結するために:

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

をこれが同じです

cat file1 file2 > destination 
関連する問題