def startConnection(self):
from ftplib import FTP
self.ftp = FTP(self.loginServer)
print 'Loging In'
print self.ftp.login(self.username, self.password)
data = []
self.ftp.dir(data.append)
for line in data:
try:
self.date_str = ' '.join(line.split()[5:8])
newDate = time.strptime(self.date_str,'%b %d %H:%M')
print newDate
col_list = line.split()
name = col_list[0]
tempDir = {}
if name.startswith('d'):
tempDir['directory'] = newDate
else:
tempDir['file']=newDate
self.dirInfo[col_list[8]] = tempDir
except:
print "**********Exception for line **********\n" + line + "\n**********Exception End**********"
此功能正常, newDate值是8月20日11:12,但是缺少年份, 所以Bydefault的年份值是1900年,这是不正确的。 为了调试它,我登录了ftp服务器并在两种情况下都显示了dir / ls,它显示时间戳如'Aug 20 11:12'。但是,如果我做ls -lTr,在这种情况下,它显示年份,
我想要的是一些如何将上述命令传递给ftp并获得结果。 是否有任何python ftplib模块的功能可以做到这一点。
答案 0 :(得分:1)
尝试
self.ftp.dir('-lTr', data.append)
答案 1 :(得分:0)
如果您使用的命令提供了短日期,或者想要处理递交给ls
的不同参数,则必须多次尝试使用不同的格式字符串来解析日期,直到你没有得到ValueError
,根据它匹配的格式对成功的解析进行后期处理 - 超过一年的文件通常会报告日期格式,包括一年但没有时间(在这里你)可能坚持默认00:00:00时间);最近以一年无格式报告的文件可能会导致当前年度违约;包含一年的格式将保持不变。