2015-12-31 3 views
3

Я работаю над скриптом, где я пытаюсь перечислить самый новый файл, заканчивающийся на .xls. Это должно быть легко, но я получаю некоторые ошибки.Новый файл Python в каталоге

Код:

for file in os.listdir('E:\\Downloads'): 
    if file.endswith(".xls"): 
     print "",file 
     newest = max(file , key = os.path.getctime) 
     print "Recently modified Docs",newest 

Ошибка:

Traceback (most recent call last): 
    File "C:\Python27\sele.py", line 49, in <module> 
    newest = max(file , key = os.path.getctime) 
    File "C:\Python27\lib\genericpath.py", line 72, in getctime 
    return os.stat(filename).st_ctime 
WindowsError: [Error 2] The system cannot find the file specified: 'u' 

ответ

9
newest = max(file , key = os.path.getctime) 

Это итерация персонажей вместо вашего файла в списке файлов.

Вы делаете что-то вроде max("usdfdsf.xls", key = os.path.getctime) вместо max(["usdfdsf.xls", ...], key = os.path.getctime)

Вы, вероятно, хотите что-то вроде

files = [x for x in os.listdir('E:\\Downloads') if x.endswith(".xls")] 
newest = max(files , key = os.path.getctime) 
print "Recently modified Docs",newest 

Вы можете захотеть также улучшить сценарий так, что он работает, если вы не в каталоге Загрузки :

files = [os.path.join('E:\\Downloads', x) for x in os.listdir('E:\\Downloads') if x.endswith(".xls")] 
+1

Тем не менее происходит мне ошибки: 'Traceback (самый последний вызов последнего): Файл "C: \ python27 \ sele.py", строка 47, в новейших = макс (файлы, ключ = os.path .getctime) Файл «C: \ Python27 \ lib \ genericpath.py», строка 72, в getctime return os.stat (имя файла) .st_ctime WindowsError: [Ошибка 2] Система не может найти указанный файл: 'usage01 .12.2015_31.12.2015 (1) .xls'' – user3580316

+1

Обновленный ответ. Это потому, что вы не запускаете его из каталога «Загрузки», поэтому «getcttime» просматривает только текущий каталог и не может найти файл. –

+0

Это сработало. Теперь я получаю 'E: \ Downloads \ usage01.12.2015_31.12.2015 (3) .xls'. Как я могу получить только имя файла без пути? – user3580316

1

Вы можете использовать glob, чтобы получить список xls файлов.

import os 
import glob 

files = glob.glob('E:\\Downloads\\*.xls') 

print "Recently modified Docs",max(files , key = os.path.getctime) 
+0

@ user3580316 Проверьте это – Zety