Python проверить самое новое изображение в файле - PullRequest
0 голосов
/ 14 июля 2020

Мне нужно получить последний файл изображения внутри папки, вот что я пробовал:

import os.path
import os

path = 'C:/Users/William/Desktop/Test Utk Deploy/Image Dir'

if len(os.listdir(path) ) == 0:
    print("Directory is empty")
else:
    files = []
    for file in os.listdir(path):
        if file.endswith(".png") or file.endswith(".jpg") or file.endswith(".jpeg") or file.endswith(".PNG") or file.endswith(".JPG") or file.endswith(".JPEG"):
            files.append(file)
    print(max(files , key = os.path.getctime))   

однако я получил эту ошибку

runfile('C:/Users/William/Desktop/Test Utk Deploy/deploy.py', wdir='C:/Users/William/Desktop/Test Utk Deploy')
Traceback (most recent call last):

  File "C:\Users\William\Desktop\Test Utk Deploy\deploy.py", line 24, in <module>
    newest = max(files , key = os.path.getctime)

  File "C:\Users\William\anaconda3\envs\faceRecog\lib\genericpath.py", line 65, in getctime
    return os.stat(filename).st_ctime

FileNotFoundError: [WinError 2] The system cannot find the file specified: 'Capture.PNG'

И я подумал проблема заключалась в том, что моя программа не могла найти последний файл (который действительно является Capture.PNG) внутри массива файлов. А потом из любопытства попытался распечатать массив файлов

print(files)

Это результат.

['Capture.PNG', 'Screenshot (13).png']

По результату похоже, что файл Capture.PNG уже был успешно сохранен в массиве файлов. Но когда я запускаю код print (max (files, key = os.path.getctime)), моя программа показывает эту ошибку. Кто-нибудь может помочь? Заранее спасибо

1 Ответ

0 голосов
/ 14 июля 2020

Модуль os.path.getctime получает системное ctime указанного пути . В ваш список включены только имена файлов, а не полный путь к ним. При попытке распечатать время он будет искать файл в каталоге по умолчанию (который может быть каталогом, из которого вы вызвали сценарий), а не в том месте, где на самом деле находится файл.

Вы можете решить эту проблему с помощью добавление полного каталога к имени, примерно так:

files.append('%s/%s'.format(path,file))

Имейте в виду, мои знания немного устарели, но что-то вроде этого должно работать.

...