2014-09-30 4 views
1

두 개의 서로 다른 FTP 위치간에 파일을 전송하는 작업을 수행하려고합니다. 그리고 간단한 목표는 Python 스크립트를 사용하여 마지막 몇 시간 동안 FTP 위치 A에서 FTP 위치 B까지 특정 파일 유형을 원합니다.파이썬을 사용하여 한 FTP 위치에서 다른 FTP 위치로 파일을 전송하십시오.

ftplib을 사용하여 작업을 수행하고 코드 아래에 정리했습니다.

지금까지 파일 전송은 from_sock 변수에 정의 된 단일 파일에 대해 정상적으로 작동하지만 지난 2 시간 이내에 생성 된 모든 파일을 반복하여 복사하려는 경우로드 블록을 치고 있습니다. 따라서 필자가 작성한 스크립트는 기본적으로 개별 파일을 복사하는 것이지만 지난 2 시간 이내에 생성 된 특정 확장명 * .jpg 파일을 모두 이동하지 않으려합니다. 파일 수정 시간을 찾기 위해 MDTM을 사용하는 것에 지쳤지만 올바른 방법으로 구현할 수는 없습니다.

이 문제에 대한 도움을 주시면 감사하겠습니다.

import ftplib 
srcFTP = ftplib.FTP("test.com", "username", "pass") 
srcFTP.cwd("/somefolder") 
desFTP = ftplib.FTP("test2.com", "username", "pass") 
desFTP.cwd("/") 
from_Sock = srcFTP.transfercmd("RETR Test1.text") 
to_Sock = desFTP.transfercmd("STOR test1.text") 
state = 0 
while 1: 
    block = from_Sock.recv(1024) 
    if len(block) == 0: 
     break 
    state += len(block) 
    while len(block) > 0: 
     sentlen = to_Sock.send(block) 
     block = block[sentlen:]  
print state, "Total Bytes Transferred" 
from_Sock.close() 
to_Sock.close() 
srcFTP.quit() 
desFTP.quit() 

감사합니다, DD 여기

+0

파이썬 전문가가 이걸 도와주세요. – daaredevill

+0

이 요청을 도와 주실 수 있습니까? 이것에 대한 도움은 많이 감사합니다. – daaredevill

+0

아직 도움이 필요하지 않습니다. 누구든지 이걸 도와 줄 수 있다면 많은 도움이됩니다. – daaredevill

답변

1

FTP를 통해 .jpg의 확장과 경로 및 업로드 된 파일을 걸리는 짧은 코드 : 아래는 현재 코드입니다. 정확히 당신이 원하는 것은 아니지만 나는 당신의 답을 발견하고 이것은 당신을 도울 수 있습니다.

import os 
from ftplib import FTP 

def ftpPush(filepathSource, filename, filepathDestination): 
    ftp = FTP(IP, username, password) 
    ftp.cwd(filepathDestination) 

    ftp.storlines("STOR "+filename, open(filepathSource+filename, 'r')) 
    ftp.quit() 

path = '/some/path/' 
for fileName in os.listdir(path): 
    if fileName.endswith(".jpg"): 
     ftpPush(filepathSource=path, filename=fileName, filepathDestination='/some/destination/') 

파일의 생성 시간은 this example를 사용하여 FTP 서버에 확인할 수 있습니다.

fileName = "nameOfFile.txt" 
modifiedTime = ftp.sendcmd('MDTM ' + fileName) 
# successful response: '213 20120222090254' 
ftp.quit() 

지금 당신은 수정 된 파일, 당신은 임계 값달라고 이하가있는 경우를 다운로드 한 다음 다른 컴퓨터에 업로드 할 때 확인해야합니다.