Помогите в следующем коде - PullRequest
0 голосов
/ 09 октября 2009
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 20 августа 11:12, но год отсутствует, поэтому значение года по умолчанию составляет 1900, что неверно. Чтобы отладить его, я вошел в систему на ftp-сервере и выполнил команду dir / ls в обоих случаях, когда он показывает отметку времени, например «20 августа 11:12». Но если я сделаю ls -lTr, то в этом случае будет показан год,

Что я хочу, так это как передать вышеуказанную команду в ftp и получить результат. Есть ли какая-нибудь функция модуля python ftplib, которая может сделать это.

Ответы [ 2 ]

1 голос
/ 09 октября 2009

Попробуйте

self.ftp.dir('-lTr', data.append)
0 голосов
/ 09 октября 2009

Если вы используете команду, которая дает краткую дату, или хотите справиться с передачей различных аргументов ls, вам придется делать несколько попыток для анализа даты в строках разного формата, пока вы не наденете ValueError, после обработки успешного анализа в соответствии с тем форматом, которому он соответствует - файлы старше года часто сообщают о формате даты, включающем год, но без времени суток (здесь вы, вероятно, можете придерживаться время по умолчанию 00:00:00); для последних файлов, представленных в формате без года, текущий год может быть установлен по умолчанию; форматы, содержащие год, останутся без изменений.

...