gpt4 book ai didi

Python wave 模块仅适用于 v2.7,不适用于 v3.4 linux

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:01 24 4
gpt4 key购买 nike

尝试用 python 编写 wave 文件浪费了很多时间,结果发现它在 python 3.4.2 上不起作用,但在 python 2.7.9 上起作用

我正在使用 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 运行该代码,我会得到一个健康的 wav 文件,只有 wave header 。如果我使用 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 安装有问题。

也许我的 wave 模块只适用于 python 2.7?我相信这不是我第一次遇到此类问题,我正在考虑只在 2.7 中工作,但我不想这样做。

任何点击将不胜感激

最佳答案

您将 sample_width 设置为 (bit_depth/bits_per_byte),它在 python 2 上是一个整数,在 python 3 上是一个 float 。

要在 python 2 和 3 上使用整数除法,请使用 (bit_depth//bits_per_byte)

关于Python wave 模块仅适用于 v2.7,不适用于 v3.4 linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34374134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com