【问题标题】:Calling curl on Windows Command line from Python从 Python 调用 Windows 命令行上的 curl
【发布时间】:2019-08-10 18:07:46
【问题描述】:

在我的 Python 脚本执行的某个时刻,我想在 Windows 命令行上调用 cURL,如下所示:

import subprocess
subprocess.call('curl', shell=True)

但我收到此错误:

'curl' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

如果我使用完整路径,也会发生同样的事情:

subprocess.call('C:\\Windows\\System32\\curl.exe', shell=True)

'curl' 不是内部或外部命令、可运行程序或批处理文件。

然而,如果我只是打开我的 Windows 命令提示符并输入“curl”,它就可以工作:

curl:尝试“curl --help”以获取更多信息

为什么?

(curl 在我的环境变量中,我的 Visual C++ Redistributables 是最新的。我在 x64 机器上使用 Windows 10 Home。)

感谢您的帮助!

【问题讨论】:

  • 查看curl的路径,可以在Windows命令提示符下运行C:\\Windows\\System32\\curl.exe
  • 你为什么要打电话给curl? Python requests 库几乎可以完成 curl 所做的所有事情,但具有更多的编程控制。
  • 因为我通过 FTP 而不是 HTTP 下载文件。不过,我同意“请求”很棒。我正在研究另一个 Python 包,“ftplib”,现在....

标签: python curl cmd


【解决方案1】:

事实证明我根本不需要 cURL。 The second answer to this post 帮助我弄清楚如何使用 Python 的 'ftplib' 包通过 FTP 在本地下载和保存文件。这是我的最终代码:

from ftplib import FTP
with FTP('ftp.ncbi.nlm.nih.gov') as ftp:
    ftp.login()
    ftp.cwd('pubmed/baseline-2018-sample')
    # acronym: File To Be Downloaded
    FTBD = 'pubmed19n0004.xml.gz'
    # acronym: Where To Store Downloaded File
    WTSDF = open('C:/Users/S/Documents/this_project/pubmed19n0004.xml.gz', 'wb')
    ftp.retrbinary('RETR ' + FTBD, WTSDF.write, 1024)
    WTSDF.close()
    ftp.quit()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2015-04-14
    • 2012-11-03
    • 1970-01-01
    • 2016-05-01
    相关资源
    最近更新 更多