【问题标题】:How do I open an FTP directory so that I can use it the same way I could a normal directory?如何打开 FTP 目录,以便可以像使用普通目录一样使用它?
【发布时间】:2020-11-06 17:13:17
【问题描述】:

我正在尝试制作一个应用程序来下载某些内容并将其放在 FTP 服务器上。没有足够的空间,即使是暂时的,也无法将正在下载的文件放到我的计算机上,所以我希望它们下载到 FTP 服务器中。

具体来说,我正在使用 pytube 下载视频:

stream.download()

.download() 可以保存一个路径变量,虽然我不知道如何使用它来以这种方式发送 FTP 服务器。我正在寻找一种方法来打开一个FTP目录,以便我可以使用路径来填写那里。

任何帮助将不胜感激。

【问题讨论】:

  • 我回答中的另一种方法可能是将 FTP 目录挂载到本地文件系统中。这样,从 pytube 的角度来看,它将是一个“普通”目录,因此 stream.download 可以与这样的路径一起使用。 如何挂载 FTP 目录将取决于您的操作系统,也可能取决于您是否具有管理员访问权限。我建议您将此信息添加到您的问题中。

标签: python python-3.x ftp pytube ftputil


【解决方案1】:

ftputil 维护者在这里。 :-)

我还没接触过pytube,所以只能回答ftputil部分。

如果您确实没有或无法将视频文件临时保存到您的计算机,您需要一种方法来获取一个类似文件的对象,以便从 Pytube 下载视频。 (我还没有看到如何。有一个“流”接口,但我不确定它们是否可以直接用作类似文件的对象。)

如果您有来自 Pytube 的文件对象,您可以创建一个类似文件的对象,以便在 FTP 服务器上为您选择的路径进行写入,并从文件对象复制到文件对象:

import shutil

import ftputil
import pytube


# Get file-like object for video.
source_file = ...

with ftputil.FTPHost(host, user, password) as ftp_host:
    with ftp_host.open('/path/to/target_file', 'wb') as target_file:
        shutil.copyfileobj(source_file, target_file)

我知道 Pytube 部分丢失了。也许其他人可以做出贡献,或者您可以在 their ticket system 上提问。 (我没有找到邮件列表或类似的。)

说了这么多,即使它没有回答您的实际问题,您也可以在本地下载每个视频文件,然后逐个文件上传到 FTP 服务器。这样,您只需为最大的视频文件留出空间。

代码示例的链接:

【讨论】:

    猜你喜欢
    • 2013-08-14
    • 2021-04-09
    • 2018-07-03
    • 2011-06-25
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    相关资源
    最近更新 更多