Я хочу сжать все pdf-файлы в каталоге с помощью ghostscript. Я думал использовать Python для чтения файлов и команда гс, что сжать PDF являетсяСценарий для сжатия всех файлов PDF в каталоге
from __future__ import print_function
import os
for path, dirs, files in os.walk("/home/mario/books"):
for file in files:
if file.endswith(".pdf"):
filename = os.path.join(root, file)
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile=file filename
Это дает синтаксическую ошибку в «/ экран», Для одного файла ниже команды работает отлично
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile=output.pdf input.pdf
Может ли кто-нибудь помочь мне исправить этот сценарий или альтернативное решение?
Вам нужно вызвать функцию python, которая выполняет программы. Проверьте 'subprocess.call'. Кроме того, при склеивании имени файла вы используете неправильное имя переменной, оно должно быть 'filename = os.path.join (путь, файл)'. – tdelaney
['find ... -exec'] (http://unixhelp.ed.ac.uk/CGI/man-cgi?find) может быть более простым вариантом. – georg