그래서 많은 FTP 계정/서비스/무엇이든지간에 파일의 큰 서버 (디렉토리)를 백업하는 스크립트가 있습니다. 비서는이 작업을 수행하기 위해 복사하여 붙여 넣기하는 문서를 가지고 있지만, 어쨌든 나는 그 문서를 D에서 구할 수있는 작업 스크립트가있는 것 같습니다.파이썬 FTP 한번에 여러 파일 업로드
이전에는 스레딩이나 멀티 프로세싱과 관련하여 혼란스럽지 않았지만 파일 목록을 가져 와서 한 번에 호스트 3-5에 업로드하는 방법을 알 수는 없습니다. 이 예제에서는 5를 시도하고 있지만, 나는 무엇을 결정할 지 모르겠다.)
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
하하, 죄송합니다, 잠들지 않을 때 나는 더 많은 산책과 추가를합니다. 나는 키보드를 나 자신으로부터 멀리 가져 가야한다. 그러나 나는 그 똑똑한 사람이 아니다. –