我是python的新手,我有一些关于ghostcript命令的问题。我已经将一些pdf文件存储在一个文件夹中,并且我已经使用pdftotext命令为每个pdf创建了.txt文件。我需要检查文件的大小,如果它低于阈值,我必须删除txt并运行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)
Pdfs文件存储方式如此12_C_2014 上面的代码不会产生任何错误。问题是print(pdf)表示必须删除3个文件,但subprocess仅适用于第一个pdf。其他两个文件仍然是未附加的。 为了使子进程为每个文件运行,我需要做哪些更改? 有人可以帮忙吗?
答案 0 :(得分:1)
我找到了解决方案,我从@ j.F得到了一些帮助。塞巴斯蒂安!我还没有通过参数-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)