我目前正在尝试编写一个简单的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字符串格式上查找文件的其他站点来仔细检查一遍和三遍,但我找不到问题所在。我还尝试在字符串中所有可能的单引号或双引号中插入“ \”(假设它们前面没有“ \”),但仍然不喜欢它(我知道这是徒劳的尝试并且是多余的。)
我该如何解决?
如果标签不正确,也感到抱歉;这是我第一次在这里发布问题。
答案 0 :(得分:0)
没关系。我发现问题是由于文件名中的字符无效(文件名中的“””更改为“#”)。