Как я могу заставить команду ghostsctip в Python работать?
Я новичок в Python, и у меня есть некоторые проблемы, касающиеся команды ghostcript. Я сохранил некоторые PDF-файлы в папке, и я уже создал.TXT-файлы для каждого PDF-файла с помощью команды pdftotext. Мне нужно проверить размер файла, и если он ниже порога, я должен удалить текст и запустить команду ghostscript, чтобы преобразовать PDF в файл.tif. Я использую Python 3.4 и код ниже:
for file in os.listdir(path):
if file.endswith('.txt'):
num = file.split("_")[0]
name = file.split("_")[1]
year = file.split("_")[2].replace('.txt', '')
size = os.stat(os.path.join(path,file)).st_size
if size < 2000:
os.remove(os.path.join(path, file))
pdf = num +"_"+name+"_"+year
print(pdf)
subprocess.check_call(["gs","-q","-dNOPAUSE","-sDEVICE=tiffg4","-r200",
"-dINTERPOLATE","-sPAPERSIZE=a4",
"-sOutputFile="+os.path.join(path, pdf)+"-%00d.tiff",
""+os.path.join(path, pdf)+""], shell=True)
PDF-файлы хранятся так 12_C_2014. Приведенный выше код не выдает никаких ошибок. Дело в том, что команда print(pdf) говорит, что нужно удалить 3 файла, но подпроцесс работает только для первого pdf. два других файла остаются нетронутыми. Какие изменения мне нужно сделать, чтобы подпроцесс работал для каждого файла? Кто-нибудь может помочь?
1 ответ
Я нашел решение, и у меня была небольшая помощь от @jF Себастьяна! Я не передал параметр -dBATCH, который заканчивается после конца последнего файла PDF, а подпроцесс работал только для первого файла PDF. Так что мой код должен быть таким (в строке, где я вызываю подпроцесс):
subprocess.check_call(["gs",
"-q",
"-dNOPAUSE",
"-dBATCH",
"-sDEVICE=tiffg4",
"-r200",
"-dINTERPOLATE","-sPAPERSIZE=a4",
"-sOutputFile="+os.path.join(path, pdf)+"-%00d.tiff",
""+os.path.join(path, pdf)+""], shell=False)