Глобус для соответствия файлов, кроме определенного расширения - PullRequest
1 голос
/ 25 марта 2019

Новичок на питоне!Я пытаюсь использовать glob в сочетании с max, чтобы найти последний измененный файл в папке, но исключая один тип с расширением pdf.Я пытался:

Без исключения у меня есть это, которое работает нормально:

crshLogs = glob.glob(homePath+crshLogPath+'*.*')
currCrshLog = max(crshLogs , key = os.path.getmtime)

Чтобы попытаться исключить PDF, который я пробовал:

crshLogs = glob.glob(homePath+crshLogPath+'!(*.pdf)')

, а также

crshLogs = glob.glob(homePath+crshLogPath+'*.*') - glob.glob(homePath+crshLogPath+'*.pdf')

Но в обоих случаях следующая строка кода завершается с ошибкой ValueError: max() arg is an empty sequence, поэтому предположительно ничего не возвращается.

Любая помощь будет с благодарностьюполучил!

Ответы [ 2 ]

1 голос
/ 25 марта 2019
[filename for filename in glob.glob(homePath+crshLogPath+'*.*') if not filename.endswith('pdf')]

Также я бы изменил

crshLogs = glob.glob (homePath + crshLogPath + '. ')

на

crshLogs = glob.glob(os.path.join(homePath, crshLogPath, *.*')

Это позаботится о дерьмовых случаях, например, homePath не заканчивается в /, а путь crshLog не начинается с /, что приведет к путанице

0 голосов
/ 25 марта 2019

Вы можете создать массив и не помещать в него pdf:

file_list=[]
for filename in glob.glob(homePath+crshLogPath+'*.*'):
    if ".pdf" not in filename:
        file_list.append(filename)

И затем получить имена файлов из этого массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...