【问题标题】:Help in the following code以下代码中的帮助
【发布时间】:2009-10-09 10:23:52
【问题描述】:
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 值为 Aug 20 11:12,但缺少年份, 所以默认年份值是 1900,这是不正确的。 为了调试它,我登录了 ftp 服务器并在两种情况下都执行了 dir / ls,它显示了像“Aug 20 11:12”这样的时间戳。但是如果我执行 ls -lTr,那么它会显示年份,

我想要的是如何将上述命令传递给 ftp 并获得结果。 有没有 python ftplib 模块的函数可以做到这一点。

【问题讨论】:

    标签: python ftplib


    【解决方案1】:

    试试

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-05
        • 2014-01-15
        • 2015-08-30
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多