Как я могу убедиться, что вызов cygwin завершен? - PullRequest
0 голосов
/ 10 января 2019

В настоящее время я вызываю метод "convert" -cygwin из Python. Он должен конвертировать PDF в файл PNG. Однако, если я вызываю метод convert и напрямую пытаюсь получить доступ к результирующему png, возникает проблема, поскольку очевидно, что png еще не полностью реализован.

Мой код:

import os
import cv2

cmd = 'set PATH="C:/cygwin64/bin";"%PATH%" && cd '+os.path.dirname(PDFPath)+' && run convert -density 300 '+os.path.basename(PDFPath)+' -quality 100 -alpha off '+ img_path
os.system(cmd)
img = cv2.imread(img_path,0)

Если я сделаю это, png будет фактически создан, но img равен None, поскольку, по-видимому, на момент вызова imread () изображение не существовало.

Я тоже пробовал что-то вроде

while not os.path.exists(img_path):
    time.sleep(10)

, а затем попытался прочитать (), который работал. Есть ли способ убедиться, что файл действительно существует перед вызовом img_path?

Я не хочу продолжать использовать time.sleep (), так как есть небольшое изменение, что в конце сна png все еще не полностью загружен из памяти.

1 Ответ

0 голосов
/ 10 января 2019

Вы должны иметь возможность добавить -wait в качестве первого аргумента к команде, которую вы запускаете с помощью run (например, run convert -wait -density ...), чтобы run дождался ее завершения. См. man run в cygwin для получения дополнительной информации о команде run.

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