Не удается получить рабочую командную строку в командной строке для работы с подпроцессом - PullRequest
0 голосов
/ 10 октября 2018

Мне нужно извлечь текст из PDF.Я попробовал PyPDF2, но метод textExtract возвратил зашифрованный текст, хотя PDF не зашифрован в соответствии с методом isEncrypted.

Поэтому я перешел к попытке доступа к программе, выполняющей работу, из командной строки.так что я мог бы вызвать его из python с помощью модуля subprocess.Я нашел эту программу с именем textExtract, которая выполнила требуемую работу со следующей командной строкой на cmd:

"textextract.exe" "download.pdf" /to "download.txt"

Однако, когда я попытался запустить ее с subprocess, я не смог получить 0 код возврата.

Вот код, который я пробовал:

textextract = shlex.split(r'"textextract.exe" "download.pdf" /to "download.txt"')
subprocess.run(textextract)

Я уже пробовал с shell=True, но он не работал.Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Нет необходимости создавать строку из строк в кавычках, а затем анализировать ее обратно в список строк.Просто создайте список и передайте следующее:

command=["textextract.exe", "download.pdf", "/to", "download.txt"]
subprocess.run(command)

Все, что shlex.split делает, - это создает список, удаляя все кавычки, которые вы должны были добавить при создании строки.Это дополнительный шаг, который не имеет значения по сравнению с самим созданием списка.

0 голосов
/ 13 октября 2018

Мне удалось заставить работать следующий скрипт из командной строки после установки приложения PDF2Text Pilot, которое вы пытаетесь использовать:

import shlex
import subprocess

args = shlex.split(r'"textextract.exe" "download.pdf" /to "download.txt"')
print('args:', args)
subprocess.run(args)

Пример вывода на экран запуска его из сеанса командной строки:

> C:\Python3\python run-textextract.py
args: ['textextract.exe', 'download.pdf', '/to', 'download.txt']
Progress:
Text from "download.pdf" has been successfully extracted...
Text extraction has been completed!

Приведенный выше вывод был сгенерирован с использованием Python 3.7.0.

Я не знаю, влияет ли использование spyder на anaconda или нет, так как я не знаком сэто / их.Если у вас по-прежнему возникают проблемы с этим, тогда, если это возможно, я предлагаю вам посмотреть, сможете ли вы заставить все работать напрямую - то есть запустить интерпретатор Python на скрипте вручную из командной строки, как показано выше.Если это работает, а использование spyder - нет, то вы хотя бы узнаете причину проблемы.

...