2014-09-30 149 views
1

我正在嘗試執行任務以在兩個不同的FTP位置之間傳輸文件。簡單的目標是,我希望使用Python腳本在過去幾個小時內從FTP位置A到FTP位置B的特定文件類型。使用Python將文件從一個FTP位置傳輸到另一個位置

我正在使用ftplib來執行任務,並將以下代碼放在一起。

到目前爲止,文件傳輸對from_sock變量中定義的單個文件工作正常,但是當我想循環訪問在過去2小時內創建的所有文件並複製它們時,我遇到了路障。所以我寫的腳本基本上是複製單個文件,但我想我不想移動所有具有特定擴展示例* .jpg的文件,這些文件是在過去2小時內創建的。我厭倦了使用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

任何Python專家請幫助我... – daaredevill 2014-10-04 05:59:38

+0

有人可以幫助我這個請求。任何幫助,這是非常感謝。 – daaredevill 2014-10-06 23:57:22

+0

還在等待這裏的一些幫助。非常感謝任何人都可以幫助我。 – daaredevill 2014-10-10 19:52:31

回答

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() 

現在你只需要檢查時,已被修改的文件,下載它,如果它是下面你祝願閾值,然後將它們上傳到另一臺計算機。

相關問題