在线文档教程

wave

wave — Read and write WAV files

源代码: Lib / wave.py

wave模块为WAV声音格式提供了一个方便的界面。它不支持压缩/解压缩,但它支持单声道/立体声。

wave模块定义了以下功能和异常:

wave.open(file[, mode])

如果file是一个字符串,则按该名称打开该文件,否则将其视为可搜索的文件类对象。模式可以是任何

'r', 'rb'只读模式。'w', 'wb'只写模式。

请注意,它不允许读/写WAV文件。

模式'r''rb'返回一个Wave_read对象,而一个模式'w''wb'返回一个Wave_write对象。如果省略模式并将文件类对象作为文件传递,file.mode则将其用作模式的默认值('b'如果需要,还会添加该标志)。

如果你传入一个类似文件的对象,当它的close()方法被调用时,wave对象不会关闭它; 关闭文件对象是调用者的责任。

wave.openfp(file, mode)

open()保持向后兼容性的同义词。

exception wave.Error

当某件事情不可能发生时会引发错误,因为它违反了WAV规范或触及实施缺陷。

1. Wave_read对象

返回的Wave_read对象open()具有以下方法:

Wave_read.close()

如果流被打开wave,请关闭流,并使实例无法使用。这是在对象收集时自动调用的。

Wave_read.getnchannels()

返回音频通道数(1单声道,2立体声)。

Wave_read.getsampwidth()

以字节为单位返回采样宽度

Wave_read.getframerate()

返回采样频率。

Wave_read.getnframes()

返回音频帧的数量。

Wave_read.getcomptype()

返回压缩类型('NONE'是唯一受支持的类型)。

Wave_read.getcompname()

人类可读的版本getcomptype()。通常'not compressed'平行'NONE'

Wave_read.getparams()

返回一个元组(nchannels, sampwidth, framerate, nframes, comptype, compname),等价于get*()方法的输出。

Wave_read.readframes(n)

最多可读取n帧音频,并以一串字节的形式进行读取和返回。

Wave_read.rewind()

将文件指针倒回到音频流的开头。

为了与aifc模块兼容定义以下两种方法,并且不要做任何有趣的事情。

Wave_read.getmarkers()

返回None

Wave_read.getmark(id)

引发错误。

以下两种方法定义了它们之间兼容的术语“位置”,并且在其他方​​面与实施相关。

Wave_read.setpos(pos)

将文件指针设置为指定的位置。

Wave_read.tell()

返回当前文件指针位置。

2. Wave_write对象

返回的Wave_write对象open()具有以下方法:

Wave_write.close()

确保nframes是正确的,并关闭文件,如果它被打开wave。这个方法在对象收集时被调用。

Wave_write.setnchannels(n)

设置通道数量。

Wave_write.setsampwidth(n)

将示例宽度设置为n个字节。

Wave_write.setframerate(n)

将帧速率设置为n

Wave_write.setnframes(n)

将帧数设置为n。如果写入更多的帧,这将稍后更改。

Wave_write.setcomptype(type, name)

设置压缩类型和说明。目前,只NONE支持压缩类型,意味着不压缩。

Wave_write.setparams(tuple)

元组应该是(nchannels, sampwidth, framerate, nframes, comptype, compname),凭有效的值set*()的方法。设置所有参数。

Wave_write.tell()

返回文件中的当前位置,对于Wave_read.tell()Wave_read.setpos()方法使用相同的免责声明。

Wave_write.writeframesraw(data)

编写音频帧,而不更正nframes

Wave_write.writeframes(data)

写音频帧并确保nframes是正确的。

请注意,在调用writeframes()或之后设置任何参数都是无效的writeframesraw(),并且任何尝试都会引发wave.Error