如何修复使用IPython.Display.Audio引起的错误(OSError [Errno22]无效参数:...)?

时间:2019-11-28 22:18:08

标签: python python-3.x audio syntax-error runtime-error

我目前正在尝试编写一个简单的Python(3.6.6)程序,该程序可以抓取Youtube视频,进行回放并为文件的波形图和频谱图绘制图形。但是它只能在Jupyter Notebook中正常运行。我正在使用this site作为该程序的指南。我想确保它也可以在IDLE中运行,但是到目前为止还没有运气。这是有关文件检索/路径设置并尝试播放的代码部分:

# Downloading audio
audiostream = video.getbestaudio()
# audiostream.download()


from tkinter import filedialog as fd

# Asking where to save it
print("Select the directory...")
dir_name = fd.askdirectory()
print(dir_name)
path = dir_name + "/" + video.title + ".wav"
print(path)
audiofile = audiostream.download(filepath=path)

import IPython.display as ipd

# Playing back the audio
print("Playing back audio...")
ipd.Audio(filename=path)

错误消息:

Traceback (most recent call last):
  File "C:\Users\(myPCname)\Desktop\YTpyDwnlder.py", line 45, in <module>
    ipd.Audio(filename=path)
  File "C:\Python36\lib\site-packages\IPython\lib\display.py", line 110, in __init__
    super(Audio, self).__init__(data=data, url=url, filename=filename)
  File "C:\Python36\lib\site-packages\IPython\core\display.py", line 627, in __init__
    self.reload()
  File "C:\Python36\lib\site-packages\IPython\lib\display.py", line 121, in reload
    super(Audio, self).reload()
  File "C:\Python36\lib\site-packages\IPython\core\display.py", line 652, in reload
    with open(self.filename, self._read_flags) as f:
OSError: [Errno 22] Invalid argument: 'C:/Users/(myPCname)/Desktop/gui/Low Roar - "I\'ll Keep Coming".wav'

该路径在大多数情况下似乎都是正确的,所以我不确定为什么程序认为这是错误的。我试图通过在Python字符串格式上查找文件的其他站点来仔细检查一遍和三遍,但我找不到问题所在。我还尝试在字符串中所有可能的单引号或双引号中插入“ \”(假设它们前面没有“ \”),但仍然不喜欢它(我知道这是徒劳的尝试并且是多余的。)

我该如何解决?

如果标签不正确,也感到抱歉;这是我第一次在这里发布问题。

1 个答案:

答案 0 :(得分:0)

没关系。我发现问题是由于文件名中的字符无效(文件名中的“””更改为“#”)。