我有多个(40 到 50 个)MP3 文件,我想将它们连接成一个文件。在 Python 中执行此操作的最佳方法是什么?
fileinput
模块循环遍历每个文件的每一行并将其写入输出文件?外包给windows copy
命令?
将这些文件中的字节放在一起很容易......但是我不确定这是否会导致连续播放 - 我认为如果文件使用相同的比特率可能会,但我不确定。
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(...)
等
只是总结一下(并从nosklo的答案中窃取),为了连接您所做的两个文件:
destination = open(outfile,'wb')
shutil.copyfileobj(open(file1,'rb'), destination)
shutil.copyfileobj(open(file2,'rb'), destination)
destination.close()
这与:
相同cat file1 file2 > destination
嗯。我不会使用“线条”。使用又快又脏
outfile.write( file1.read() )
outfile.write( file2.read() )
;)
改进 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)
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