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

Что мне нужно, так это то, как я могу передать команду команде ftp и получить результат. Есть ли функция модуля python ftplib, которая может это сделать.

ответ

1

Попробуйте

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

работал отлично, спасибо – 2009-10-09 11:33:57

0

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

Смежные вопросы