Ошибка lp
возникает потому, что она не может найти test.jpg
в текущем каталоге, который, вероятно, является каталогом, из которого вы запускаете этот скрипт Python. Причина этого в том, что список строк, возвращаемых os.listdir
, содержит только имя файла каталога, но не сам полный путь.
>>> os.listdir('/tmp/foo/bar')
['file5.jpg', 'file4.jpg', 'file3.jpg', 'file2.jpg', 'file1.jpg', 'file5', 'file4', 'file3', 'file2', 'file1']
Обратите внимание, что все файлы перечислены без предшествующего каталога, а не только jpg
файлов, которые вам могут понадобиться. Один из возможных способов исправить это - присоединить значение path_to_watch
для каждого из значений, возвращаемых os.listdir
(чтобы у lp
был полный, однозначный путь к предполагаемому файлу), а также отфильтровать результат по jpg, но тогда я заметил, что вы импортировали glob
. Этот модуль предоставляет функцию glob
, которая должна предоставить именно то, что вам нужно, попробуйте:
>>> from glob import glob
>>> glob('/tmp/foo/bar/*.jpg')
['/tmp/foo/bar/file5.jpg', '/tmp/foo/bar/file4.jpg', '/tmp/foo/bar/file3.jpg', '/tmp/foo/bar/file2.jpg', '/tmp/foo/bar/file1.jpg']
Обратите внимание, как включен полный путь. Чтобы интегрировать это в свой код, вы можете попробовать:
before = dict ([(f, None) for f in glob(path_to_watch + '*.jpg')])