У меня есть проект, над которым я работаю над использованием Python и GhostScript. В настоящее время у меня есть файл PDF с несколькими сотнями страниц, мне нужно взять этот PDF-файл и разделить страницы на TIF-файлы, у меня код работает правильно, однако, поскольку эта программа может занять некоторое время, я бы хотел выход для пользователя, показывающий, насколько далеко он находится в процессе.Пробег GhostScript
gs_appdir = 'C:\\Program Files\\gs\\gs9.10\\bin\\'
os.chdir(gs_appdir)
args = "-o \""+wkgdir+"Images\\Image_%03d.tif\" -sDEVICE=tiffg4 -q -NODISPLAY -r200x200 -s \""+inPDFFile+"\""
os.system("gswin64c.exe %s" % args)
Когда я беру параметром -q из аргументов он покажет мне, однако он будет идти по линии построчно:
Страница 1 из хххх
Страница 2 из хххх
Page 3 xxxx
... et c.
Я хотел бы сделать что-то похожее на это:
print "\r[ Preparing Images ] %s%%" % ((img+1)*100/imgcount),
Где он будет печатать процент на той же линии, но я не совсем уверен, как сделать это, используя Ghostscript. Любые советы будут очень полезны.
Это почти то, чего я боялся. Я думаю, что мои пользователи просто должны согласиться на 1-2-минутное ожидание (вероятно, они сделают для них предварительное сообщение). Что касается \ r, вы правы, не все согласятся, однако для этой конкретной настройки он работает. – user3232819
@ user3232819: Вам просто нужно изменить свой подход к этому. Вы можете получить выход процесса во время работы, и вам не нужно ждать завершения процесса. Взгляните на это: http://stackoverflow.com/questions/16557908/getting-output-of-a-process-at-runtime // Если вы вызываете Ghostscript в предлагаемом способе, вы сможете получить строку за строкой вывод из Ghostscript во время обработки страниц. Я сделал аналогичную вещь в .NET, и она работает. Когда вы получаете линейный вывод, выполните синтаксический анализ каждой строки, чтобы получить «текущую страницу» вместе с «полными страницами» и вычислить значение вашего прогресса. – HABJAN