使用pytube库下载的文件无法保存到指定位置问题咨询
问题原因分析
- 你调用
stream.download()时没有传入output_path参数,pytube默认会将视频保存到脚本运行的当前工作目录,这是路径不符合预期的核心原因 - 后续
open("\Download", "w")及写入的代码逻辑完全错误:stream.download()每次调用都会触发一次下载,你这里相当于重复下载了两次;且你写入的是download()方法返回的文件路径字符串,不是视频二进制内容,这段代码对保存视频到目标路径没有任何作用,属于冗余错误代码
修正方案
- 先声明你要保存的目标路径,建议提前判断路径是否存在,不存在则自动创建,避免报错
- 调用
stream.download()时传入output_path参数指定目标目录即可 - 删掉冗余的文件写入代码
修改后的完整代码如下:
import os import time from tqdm import tqdm from colorama import Fore from pytube import YouTube # 替换为你自己的目标保存路径,Windows下可以写 r"C:\Users\你的用户名\Downloads" 或者 "D:/MyVideos" TARGET_SAVE_PATH = "./downloads" # 示例为当前目录下的downloads文件夹,可自行修改 # 你自己定义的progress_callback函数保留即可 def progress_callback(stream, chunk, bytes_remaining): pbar.update(len(chunk)) af = input("Link:") yt = YouTube(af, on_progress_callback=progress_callback) stream = yt.streams.get_highest_resolution() print(f"Downloading video to '{stream.default_filename}'") pbar = tqdm(total=stream.filesize, unit="bytes") # 目标路径不存在则自动创建 os.makedirs(TARGET_SAVE_PATH, exist_ok=True) # 传入output_path参数指定保存目录 path = stream.download(output_path=TARGET_SAVE_PATH) pbar.close() print(Fore.LIGHTGREEN_EX + "Saved video to {}".format(path)) time.sleep(10)
注意:Windows系统下路径如果用反斜杠
\需要转义写成\\,或者在字符串前加r标记为raw字符串,避免转义字符导致路径识别错误。
内容的提问来源于stack exchange,提问作者W3gor
相关产品推荐
相关产品推荐

