因此,我有一个脚本,我正在努力将大型服务器(的目录)的文件备份到大量的FTP帐户/服务/任何(目前穷人秘书有一个复制和粘贴文件来做到这一点,但无论如何,我已经接近有一个工作脚本来从她那里保存她= D)。我之前并没有真正地搞过线程或多处理,但我无法弄清楚如何让它获取文件列表,并且一次性向主机上传'em全部(in这个例子,我试着5,但我不知道我会决定什么)。Python FTP一次上传多个文件
import os, sys, subprocess, shutil, re, string, glob, tvdb_api, itertools, multiprocessing, ftplib
files = [os.path.join(r, f) for r, d, fs in os.walk(os.getcwd()) for f in fs if not f[0]=='.']
class FTP_Upload:
def __init__(self, p=os.getcwd()):
self.files_to_upload = sorted([f for f in files if os.path.split(f)[0] == p])
self.target = raw_input("Enter the host you want to upload to: ")
self.host = FTP('ftp.host1.com', 'user_name1', 'super_secret_password1') if self.target == 'host' else FTP('ftp.host2.com', 'user_name2', 'secret_password2') if self.target == 'host2' else None
def upload_files(self, f):
self.host.storbinary(('STOR /'+f.split('/')[-1]), open(f, 'rb'))
def multiupload(self):
p = multiprocessing.Pool(processes=5)
p.map(self.upload_files(f), self.files_to_upload)
FTP_Upload().multiupload()
但是,这只是在上传的self.files_to_upload最后一个文件...
我尝试了制作文件列表中的迭代
self.files_to_upload = iter(sorted([f for f in files if os.path.split(f)[0] == p]))
,但没有喜悦。
在此先感谢您的帮助!
问题在哪里?你知道有一个[ftplib](http://docs.python.org/library/ftplib.html#module-ftplib)? – dav1d
哈哈,对不起,当我不睡觉的时候,我会变得更加懒散,并且ADD。我应该远离自己的键盘,但我从来没有那么聪明。 –