如何在 Python 中连接文件?

问题描述 投票:0回答:5

我有多个(40 到 50 个)MP3 文件,我想将它们连接成一个文件。在 Python 中执行此操作的最佳方法是什么?

使用

fileinput
模块循环遍历每个文件的每一行并将其写入输出文件?外包给windows
copy
命令?

python file mp3
5个回答
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(...)


35
投票

只是总结一下(并从nosklo的答案中窃取),为了连接您所做的两个文件:

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

这与:

相同
cat file1 file2 > destination

6
投票

嗯。我不会使用“线条”。使用又快又脏

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

;)


2
投票

改进 Clint 和 nosklo,了解上下文管理器,我发现这样写更干净:

import shutil
import pathlib

source_files = pathlib.Path("My_Music").rglob("./*.mp3")
with open("concatenated_music.mp3", mode="wb") as destination:
    for file in source_files:
        with open(file, mode="rb") as source:
            shutil.copyfileobj(source, destination)

0
投票
import pandas as pd
import numpy as np
import cobra
from cobra import Model, Reaction, Metabolite

f3 = pd.read_csv('test3.csv')
f4 = pd.read_csv('test4.csv')
f5 = pd.read_csv('test5.csv')

frames = [f3, f4, f5]
all_data = pd.concat(frames)

all_data.to_csv('all_data.csv')[enter image description here][1]


[1]: https://i.stack.imgur.com/Xt5ib.gif
© www.soinside.com 2019 - 2024. All rights reserved.