使用卷曲下载多个文件

问题描述:

我必须使用python脚本在Windows上使用cURL。我的目标是:使用Python脚本从远程目录中获取所有文件...最好放到本地目录中。之后,我会将每个文件与本地存储的文件进行比较。我能够一次获得一个文件,但我需要从远程目录中获取所有文件。 有人可以请教如何获得多个文件? 我使用这个命令: curl.exe -o FILE1.TXT SFTP:///dir1/file1.txt -k -u用户名:密码使用卷曲下载多个文件

感谢

+0

除非使用CygWin,否则Windows没有'curl'。 PowerShell 3+具有'Invoke-WebRequest'(别名为'curl',但参数不同)。无论如何,如果你使用Python,为什么不使用Python('urllib')? – 2014-09-24 17:57:55

+3

如果你“必须”使用curl,这与python有什么关系。 – cmd 2014-09-24 17:57:59

+0

即使您需要'curl'中的某些功能,您不知道如何映射到'urllib',是否有原因不想使用'pycurl'? – abarnert 2014-09-24 18:02:00

我没有测试过这一点,但我认为你可以尝试启动每个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() 
+1

感谢您的建议,但基于您的建议,我成功使用pysftp完成了我的目标 – susja 2014-09-25 21:34:26