1

私は問題があります。たとえば、a.wav、b.wav、c.wavの3つのサウンドファイルがあります。それらを単一のファイル、たとえばall.xmv(拡張子も異なる可能性があります)に書き込みたいのですが、必要なときにそれらの1つを抽出して再生したい(たとえば、a.wavを再生して抽出したい) all.xmvを形成します)。

どうすればPythonでそれを行うことができますか。blockwriteDelphiで名前が付けられた関数があると聞きましたが、それは私が望むことを実行します。DelphiのようなPythonの関数はありますblockwriteか、またはこれらのファイルを書き込んで再生するにはどうすればよいですか?

4

2 に答える 2

4

標準の tar/zip ファイルは役に立ちますか?

http://docs.python.org/library/zipfile.html

http://docs.python.org/library/tarfile.html

于 2011-05-13T22:42:27.747 に答える
0

アーカイブのアイデア (ところで、あなたの質問に対する最良の回答です) があなたに合わない場合は、複数のファイルからのデータを 1 つのファイルに融合できます。たとえば、バイナリ データの連続ブロックを書き込むことによって (圧縮されていないアーカイブを作成します!)

パスを連結する必要があるファイルのリストにします。

import io
import os

offsets = [] # the offsets that should be kept for later file navigation
last_offset = 0

fout = io.FileIO(out_path, 'w')
for path in paths:
    f = io.FileIO(path) # stream IO
    fout.write(f.read())
    f.close()
    last_offset += os.path.getsize(path)
    offsets.append(last_offset)       
fout.close()

# Pseudo: write the offsets to separate file e.g. by pickling
# ...

# reading the data, given that offsets[] list is available
file_ID = 10                   # e.g. you need to read 10th file
f = io.FileIO(path)    
f.seek(offsets[file_ID - 1])   # seek to required position 
read_size = offsets[filed_ID] - offsets[file_ID - 1]  # get the file size
data = f.read(read_size)       # here we are! 
f.close()
于 2011-05-14T14:10:43.400 に答える