Python で Wave ファイルを書き込もうとして何時間も無駄にしました
私は Debian jessie を使用しており、両方のバージョンの Python がインストールされています。コマンドプロンプトに「python」と書くだけで、python 2.7.9が起動します
私がテストしていたコードはこれでした:
import wave
frame_rate = 44100
bit_depth = 16
bits_per_byte = 8
num_channels = 2
wOut = wave.open("out.wav","w")
wOut.setparams((num_channels, (bit_depth / bits_per_byte), frame_rate, (frame_rate * duration), 'NONE', 'not compressed'))
wOut.close()
そのコードを python 2.7.9 で実行すると、wave ヘッダーだけの健全な wav ファイルが得られます。Python 3.4.2 で同じコードを実行すると、次のエラーが発生します。
File "/usr/lib/python3.4/wave.py", line 433, in close
self._ensure_header_written(0)
File "/usr/lib/python3.4/wave.py", line 455, in _ensure_header_written
self._write_header(datasize)
File "/usr/lib/python3.4/wave.py", line 472, in _write_header
self._sampwidth * 8, b'data'))
struct.error: required argument is not an integer
また、wave ファイルにはヘッダーの最初の 4 バイトのみが含まれます。
これがpython 3.4の問題であることを示すドキュメントをオンラインで見つけていないので、マルチバージョンのpythonインストールの問題であると推測しています。
多分私が持っているウェーブモジュールはpython 2.7専用ですか?この種の問題はこれが初めてではないと思います.2.7でのみ作業することを考えていますが、したくありません.
どんなヒットでも大歓迎です