【问题标题】:Use curl to download multiple files使用 curl 下载多个文件
【发布时间】:2014-09-25 04:00:41
【问题描述】:

我必须使用 python 脚本在 Windows 上使用 cURL。我的目标是:使用 python 脚本从远程目录中获取所有文件......最好进入本地目录。之后,我会将每个文件与本地存储的文件进行比较。我一次可以获取一个文件,但我需要从远程目录中获取所有文件。 有人可以建议如何获取多个文件吗? 我使用这个命令: curl.exe -o file1.txt sftp:///dir1/file1.txt -k -u user:password

谢谢

【问题讨论】:

  • Windows 没有curl,除非您使用 CygWin。 PowerShell 3+ 具有 Invoke-WebRequest(别名为 curl,但 args 不同)。无论如何,如果您使用 Python,为什么不使用 Python (urllib)?
  • 如果你“必须”使用curl,这和python有什么关系。
  • 即使你需要curl 的一些你不知道如何映射到urllib 的功能,你是否有理由不想使用pycurl
  • @NickT:您也可以从他们网站上的安装程序或通过 MinGW 安装 curl;在任何一种情况下,它都是一个名为 curl.exe 的本机 Win32 应用程序,而不是一个名为 curl 的 cygwin 应用程序。所以,我认为提问者已经让这部分工作了。

标签: python curl


【解决方案1】:

我尚未对此进行测试,但我认为您可以尝试将每个 shell 命令作为单独的进程启动以同时运行它们。显然,如果您有大量文件,这可能不是一个好主意,因此您可能需要更仔细地管理它。这是一些未经测试的代码,当然,您需要在 get_file 函数中编辑“cmd”变量。

from multiprocessing import Process
import subprocess

def get_file(filename):
    cmd = '''curl.exe -o {} sftp:///dir1/{} -k -u user:password'''.format(filename, filename)
    subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT) # run the shell command

files = ['file1.txt', 'file2.txt', 'file3.txt']

for filename in files:
    p = Process(target=get_file, args=(filename,)) # create a process which passes filename to get_file()
    p.start()

【讨论】:

  • 感谢您的建议,但根据您的建议,我使用 pysftp 成功完成了我的目标
猜你喜欢
  • 2014-04-06
  • 2016-05-02
  • 2012-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-02
  • 2014-05-13
  • 1970-01-01
相关资源
最近更新 更多