Python: не удается открыть файл с помощью os.system () - PullRequest
6 голосов
/ 03 февраля 2011

Я пишу скрипт Python, который несколько раз использует приложение pdftk для выполнения некоторых операций.

Например, я могу использовать pdftk в командной строке Windows дляобъединить два файла PDF, как это:

pdftk 1.pdf 2.pdf cat output result.pdf

Я хотел бы выполнить вышеупомянутую операцию в середине моего скрипта Python.Вот как я пытался это сделать:

os.system('pdftk 1.pdf 2.pdf cat output result.pdf')

Приведенная выше команда pdftk отлично работает в оболочке Windows.Тем не менее, он не может открыть входные файлы (1.pdf и 2.pdf), когда я пытаюсь выполнить его, используя Python os.system().Вот сообщение об ошибке, которое я получаю от pdftk при попытке выполнить команду, используя os.system():

Python: Ошибка: не удалось открыть файл PDF: 1.pdf

Ошибка: не удалосьоткрыть PDF файл: 2.pdf

Почему это происходит?Как я могу это исправить?

Пожалуйста, обратите внимание: я знаю, что есть лучшие способы объединения файлов PDF с Python.Мой вопрос не о слиянии PDF-файлов.Это был просто игрушечный пример.То, чего я пытаюсь добиться, - это способность выполнять pdftk и другие приложения командной строки, используя Python.

Ответы [ 2 ]

3 голосов
/ 04 февраля 2011

Вы можете избежать (потенциальных) проблем с цитированием, экранированием и т. Д. С помощью subprocess:

import subprocess

subprocess.call(['pdftk', '1.pdf', '2.pdf', 'cat', 'output', 'result.pdf'])

Это так же просто, как и os.system, и даже проще, если выдинамическое построение списка аргументов.

2 голосов
/ 03 февраля 2011

Вам необходимо установить текущий рабочий каталог процесса.Если файлы .pdf расположены по адресу /some/path/to/pdf/files/:

>>> os.getcwd()
'/home/vz0'
>>> os.chdir('/some/path/to/pdf/files/')
...