【问题标题】:Redirecting downloaded file to users downloads folder (Python)将下载的文件重定向到用户下载文件夹(Python)
【发布时间】:2021-11-02 06:01:53
【问题描述】:
我正在尝试使用 python 和 tkinter 作为练习来构建一个简单的 youtube 视频下载器应用程序。我最终成功地制作了一个下载视频的应用程序,但我希望能够重定向到用户下载文件夹,这样它就不会在可执行文件旁边下载它。以下是我使用 pytube 下载视频的方法:
from pytube import YouTube
video = YouTube("https://www.youtube.com/watch?v=Wcj_tkFAX-o").streams.get_highest_resolution().download()
【问题讨论】:
标签:
python
path
operating-system
【解决方案1】:
您希望在最后将文件路径传递给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 安装尤其不包括 Downloads 文件夹。同样,一些 Windows 服务器安装也没有该文件夹。
pytube 的额外提示
我也只是想提醒您这一点,因为我最近刚刚为 pytube 编写了一个包装器,您还应该进行一些错误检查,因为如果视频因任何原因不可用,pytube 可能会引发很多错误。您可以查看this code,了解我在使用该库时遇到的各种潜在情况和异常的示例。