gpt4 book ai didi

python - 如何在 Python 中打开 AIFC 文件以将标记数据附加到该文件?

转载 作者:太空宇宙 更新时间:2023-11-03 19:09:23 24 4
gpt4 key购买 nike

我已将名为 aifc 的模块导入到 Mac 上的 Python 中,我正在运行 Python 3.3 和 Mac OS X 10.8.2。

我正在尝试将标记数据从一个 aifc 文件复制到另一个 aifc 文件。我可以成功打开第一个文件并读取标记数据,效果很好。但是,当我打开第二个 aifc 文件时,方法 aifc.open("file2.aifc", 'w') 立即删除该文件的所有内容。所以我最终得到了一个带有正确标记的 aifc 文件,但没有音乐!

我做了一些研究,发现Python在以'w'模式打开文件时删除文件内容是正确的行为。我读到模式 'a' 允许附加文件。然而,当我尝试模式 'a' 时, aifc.open() 方法给了我一个错误,解释器说模式必须是 "r" “rb” “w”“wb”

因此我陷入了困境——也许这是一个旧的库,我应该使用不同的东西。

如果是这样,有人可以指导我如何在 Python 中访问 Apple Objective C 库来操作音频文件。我认为有一个名为音频文件服务的库,但我不清楚如何在 Python 中使用它。

虽然我对编程并不陌生,但我对 Python 很陌生,所以如果这些是新手问题,我深表歉意。

最佳答案

我自己也遇到过这个!

aifc.open 辅助函数显式地将模式限制为“r”、“rb”、“w”和“wb”。看来此模块中的类(Aifc_readAifc_write)仅用于分别读取现有 AIFC 文件或从头开始创建全新的 AIFC 文件。

这是我使用此模块提出的可读+可写 AIFC 文件实用程序:

import aifc
import sys


class AIFC(aifc.Aifc_write, aifc.Aifc_read):

def __init__(self, f):
aifc.Aifc_write.initfp(self, f)
aifc.Aifc_read.initfp(self, f)


if (__name__ == "__main__"):
f = open(sys.argv[1], "rb+")
a = AIFC(f)

# read test
print("%s channels, %s bits, %s Hz sampling rate, %s frames" %
(a.getnchannels(), a.getsampwidth() * 8, a.getframerate(),
a.getnframes()))

# write ("identity") test
data = a.readframes(a.getnframes())
a.setpos(0)
a.writeframes(data)
a.close() # f.close()

它还没有经过广泛的测试,但它似乎确实有效。我已经通过它运行了几个原始 AIF,它们都在 Audacity 中正确播放。

关于python - 如何在 Python 中打开 AIFC 文件以将标记数据附加到该文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13537013/

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