将下载的文件重定向到用户下载文件夹 (Python)

Redirecting downloaded file to users downloads folder (Python)

我试图使用 python 和 tkinter 作为练习来构建一个简单的 youtube 视频下载器应用程序。我确实最终成功制作了一个应用程序来下载视频,但我希望能够重定向到用户下载文件夹,这样它就不会在可执行文件旁边下载它。以下是我如何使用 pytube 下载视频:

from pytube import YouTube
video = YouTube("https://www.youtube.com/watch?v=Wcj_tkFAX-o").streams.get_highest_resolution().download()

您想将文件路径传递给最后的 download() 函数调用。一种跨平台的方法是:

from pytube import YouTube
import os

if os.name == "nt":
    DOWNLOAD_FOLDER = f"{os.getenv('USERPROFILE')}\Downloads"
else:  # PORT: For *Nix systems
    DOWNLOAD_FOLDER = f"{os.getenv('HOME')}/Downloads"

video = YouTube("https://www.youtube.com/watch?v=Wcj_tkFAX-o").streams.get_highest_resolution().download(DOWNLOAD_FOLDER)

说明

os.getenv 的调用获取用户路径的环境变量。例如,如果您在 C 盘上有一个名为“kieran”的 windows 帐户,则 os.getenv('USERPROFILE') == "C:\Users\Kieran"。然后您可以在末尾添加 Downloads 。这也适用于您的文件资源管理器和 CMD,您可以进入文件资源管理器的顶部并键入 %USERPROFILE%,它将带您到该文件夹​​,或将其键入 CMD 以查看结果。

在linux/MacOS上也是一样的原理,只是变量叫做HOME.

其他详细信息

请记住,并非所有用户类型都存在这些文件夹,linux 的某些安装特别排除了“下载”文件夹。同样,一些 windows 服务器安装也没有该文件夹。

pytube 的额外提示

我也只是想给你提个醒,因为我最近刚刚为 pytube 写了一个包装器,你也应该做一些错误检查,因为如果视频 pytube 会抛出很多错误由于任何原因不可用。您可以查看 this code,了解我在使用该库时遇到的各种潜在情况和异常的示例。