2010-06-18 3 views
2

Я написал код для извлечения, а файл и время, которое он создал, я просто хочу получить последнее имя файла. Пожалуйста, предложите, как я могу это сделать в jython.Как получить последний файл в папке

import os 
    import glob 
    import time 
    folder='C:/xml' 
    for folder in glob.glob(folder): 
     for file in glob.glob(folder+'/*.xml'): 
      stats=os.stat(file) 
      print file ,time.ctime(stats[8]) 

Еще раз спасибо за вашу помощь

я вновь изменил коды, как предложено, и я не получаю правильный ответ, пожалуйста, предложить то, что ошибка я делаю.

import os 
import glob 
import time 
folder='C:/xml' 
for x in glob.glob(folder+"/*.xml"): 
    (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)=os.stat(x) 
    time1=time.ctime(mtime) 
    for z in glob.glob(folder+"/*.xml"): 
     (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)=os.stat(z) 
     time2=time.ctime(mtime) 
     if (time1>time2): 
      new_file=x 
      new_time=time1 
     else: 
      new_file=z 
      new_time=time2 

print new_file,new_time 

ответ

1

Используйте две переменные, чтобы отслеживать имя и время последнего найденного файла. Всякий раз, когда вы найдете файл позже, обновите обе переменные. Когда ваш цикл будет выполнен, переменные будут содержать имя и время последнего файла.

Я не совсем уверен, почему у вас есть два вложенных цикла в вашем примере кода; если вы ищете все файлы *.xml в данном каталоге, вам нужен только один цикл.

раствор А Pythonic может быть что-то вроде:

folder = "C:/xml" 
print max((os.stat(x)[8], x) for x in glob.glob(folder+"/*.xml")) 

Если вы выбираете max() решения, обязательно рассмотрят случай, где нет нет*.xml файлов в каталоге.

+0

Я переделал код, но я не получил правильный ответ, любое предложение. Спасибо за помощь. – kdev

+0

@kdev: Опять же, почему у вас есть * два вложенных цикла? Одного должно быть достаточно. Попробуйте написать свой код в одном цикле и посмотреть, поможет ли это. –

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