獲得最新的文件,我使用FTPLIB連接到FTP站點。我想獲取最近上傳的文件並下載它。我能夠連接到FTP服務器並列出這些文件,我也將它們放在一個列表中並獲得了日期字段的轉換。有沒有可以獲取最近日期並從列表中輸出整行的功能/模塊?蟒蛇FTP按日期
#!/usr/bin/env python
import ftplib
import os
import socket
import sys
HOST = 'test'
def main():
try:
f = ftplib.FTP(HOST)
except (socket.error, socket.gaierror), e:
print 'cannot reach to %s' % HOST
return
print "Connect to ftp server"
try:
f.login('anonymous','[email protected]')
except ftplib.error_perm:
print 'cannot login anonymously'
f.quit()
return
print "logged on to the ftp server"
data = []
f.dir(data.append)
for line in data:
datestr = ' '.join(line.split()[0:2])
orig-date = time.strptime(datestr, '%d-%m-%y %H:%M%p')
f.quit()
return
if __name__ == '__main__':
main()
UPDATE:
現在我試圖創建兩個列表,日期和其他的文件名,然後合併成一個字典,但整理之後,它似乎沒有不給出正確的價值觀..
什麼想法?
data = []
f.dir(data.append)
datelist = []
filelist = []
for line in data:
col = line.split()
datestr = ' '.join(line.split()[0:2])
date = time.strptime(datestr, '%m-%d-%y %H:%M%p')
datelist.append(date)
filelist.append(col[3])
combo = zip(datelist,filelist)
who = dict(combo)
for key,value in sorted(who.iteritems(), key =lambda (k,v): (v,k)):
print "%s: %s" % (key,value)
解決:
以前的錯誤是由於字典按值排序,我已經更新了它的鍵排序和現在的工作,
data = []
f.dir(data.append)
datelist = []
filelist = []
for line in data:
col = line.split()
datestr = ' '.join(line.split()[0:2])
date = time.strptime(datestr, '%m-%d-%y %H:%M%p')
datelist.append(date)
filelist.append(col[3])
combo = zip(datelist,filelist)
who = dict(combo)
# print who
# for key,value in sorted(who.iteritems(), key =lambda (k,v): (v,k)):
for key in sorted(who.iterkeys(), reverse=True):
print "%s: %s" % (key,who[key])
filename = who[key]
print "file to download is %s" % filename
try:
f.retrbinary('RETR %s' % filename, open(filename, 'wb').write)
except ftplib.err_perm:
print "Error: cannot read file %s" % filename
os.unlink(filename)
else:
print "***Downloaded*** %s " % filename
return
f.quit()
return
的一個問題,就是有可能從字典中檢索第一個元素?我在這裏所做的是,for循環只運行一次,然後退出,從而給了我第一個排序值這是很好的,但我不認爲這是一個很好的做法去做這樣..
是否有可能加入下載,而不是隻是一般的最新文件最新的.csv文件? – Deusdeorum
FTP以明文形式發送密碼。 SFTP更安全(FTP over SSH,pip install [pysftp](https://pypi.python.org/pypi/pysftp)),但[速度不快](https://serverfault.com/a/559554/103459)作爲FTPS(FTP在SSL/TLS),如使用,其是作爲簡單['ftplib.FTP_TLS()'](https://docs.python.org/library/ftplib.html#ftplib.FTP_TLS)代替'FTPLIB .FTP()'。 –