2010-03-18 3 views
1

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

Кто-нибудь знает, что мне не хватает?

def getPDFContent(path): 
    path = "/path/to/a valid/pdffile.pdf" 

    process = subprocess.Popen(["pdftotext", path], shell=False, 
     stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 
    content, err = process.communicate()[0:2] 
    return content, err 
+0

Обратите внимание, что прием '[0: 2]' срез не является необходимым; 'communication' всегда возвращает длину-два кортежа. –

+0

Ах, действительно, спасибо. – mlissner

ответ

2

По умолчанию pdftotext не выводит ничего на стандартный вывод, вместо этого он создает .txt файл с тем же базовым именем как PDF. Чтобы получить текст на стандартный вывод, добавить - в качестве второго параметра в вызове pdftotext:

process = subprocess.Popen(["pdftotext", path, "-"], shell=False, 
    stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 
+0

Боже, ты прав. Ой, я иногда ненавижу жизнь. – mlissner

Смежные вопросы