如何在Python中合并文件?

38 投票
4 回答
44952 浏览
提问于 2025-04-15 12:17

我有大约40到50个MP3文件,想把它们合并成一个文件。用Python怎么做比较好呢?

可以使用fileinput模块,逐行读取每个文件的内容,然后写入一个输出文件吗?或者可以借助Windows的copy命令来实现?

4 个回答

6

嗯。我不会用“行”。这是个快速而简单的用法。

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

;)

35

简单总结一下(借用一下nosklo的回答),如果你想把两个文件合并在一起,可以这样做:

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

这其实和下面的做法是一样的:

cat file1 file2 > destination
52

把这些文件里的字节拼在一起其实很简单……不过我不太确定这样做会不会让它们连续播放。我觉得如果这些文件的比特率(也就是音质)是一样的,可能会连续播放,但我不太确定。

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

这样会生成一个名为“everything.mp3”的文件,里面包含了C:\music文件夹里所有mp3文件的字节拼接在一起的内容。

如果你想在命令行中输入文件名,可以用 sys.argv[1:] 来代替 iglob(...) 等等。

撰写回答