请参阅以下代码中的帮助

时间:2009-10-09 10:23:53

标签: python ftplib

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模块的功能可以做到这一点。

2 个答案:

答案 0 :(得分:1)

尝试

self.ftp.dir('-lTr', data.append)

答案 1 :(得分:0)

如果您使用的命令提供了短日期,或者想要处理递交给ls的不同参数,则必须多次尝试使用不同的格式字符串来解析日期,直到你没有得到ValueError,根据它匹配的格式对成功的解析进行后期处理 - 超过一年的文件通常会报告日期格式,包括一年但没有时间(在这里你)可能坚持默认00:00:00时间);最近以一年无格式报告的文件可能会导致当前年度违约;包含一年的格式将保持不变。