【问题标题】:Are there any advantages of connecting to an FTP server using Python compared to Bash/shell? [closed]与 Bash/shell 相比,使用 Python 连接到 FTP 服务器有什么优势吗? [关闭]
【发布时间】:2015-09-01 22:19:39
【问题描述】:

我目前正在尝试编写一个快速脚本来连接到 FTP 服务器并自动下载文件。在做一些研究时,我遇到了this Superuser question,我很好奇使用 Python 代替 Bash 是否真的更容易。

我想知道连接或文件下载结束时的返回码,如果 Python 提供更好的支持,我会很乐意选择 Python。是否有可能或难以使用 Bash 或其他方式获取状态代码?还有什么让这两个选项之一变得困难的原因吗?

【问题讨论】:

  • 我认为它更容易,但我有偏见,因为我知道 python 而不是那么多 bash 编程..

标签: python bash ftp


【解决方案1】:

当您“使用 bash”运行 FTP 会话时,您根本没有真正使用 bash。您正在做的是运行一个命令行 FTP 客户端,并为其提供一个输入列表,该列表模仿用户的操作。

这通常不是一个非常健壮的方法。对于连接到终端的命令行来说合理的界面对于编写脚本来说并不是太好;例如,它将使用stderr 提供的人类可读的错误消息,而不是函数返回调用。由于在这种情况下您通常没有任何决策能力,因此问题更加严重,因为bashftp 运行期间处于休眠状态。 (这里的例外是,如果您要使用 expect 或其他类似方法。但这与具有 API 的库相比,晦涩难懂、困难且远不方便。)

相比之下,在 Python 中,您使用的是专为编码而设计的库。这确实比尝试为命令行可执行文件编写临时脚本更容易、更健壮。在运行会话时,您可以完全使用 Python 语言的强大功能;您可以在错误发生时对其做出反应,并实施您喜欢的任何逻辑来处理失败和成功案例。如果您正在尝试做任何远程稳健或复杂的事情,这是最好的。

编辑:这条规则有一个例外;如果您没有使用交互式 FTP 程序(例如默认客户端 ftp),而是使用为 shell 脚本设计的程序,例如 ncftpgetcurl。在这种情况下,您可以使用 bash 脚本的强大功能进行决策,因此仅根据语言做出决策。总的来说,Python 是一种更好的语言,运行速度更快,并提供了复杂的数据结构和更高级的编程范式等特性;与此同时,bash 更普遍可用,并且可以更快地编写和测试。由于 bash 的主要优势(假设有合适的客户端程序来编写脚本)是它减少了与创建脚本相关的开销,因此它通常更适合非常小的程序(不超过几十行)。

【讨论】:

    猜你喜欢
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 2019-03-20
    • 1970-01-01
    • 2018-10-08
    相关资源
    最近更新 更多