如何在python工作中制作ghostscript命令?

时间:2014-12-18 13:05:12

标签: python subprocess ghostscript

我是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。其他两个文件仍然是未附加的。 为了使子进程为每个文件运行,我需要做哪些更改? 有人可以帮忙吗?

1 个答案:

答案 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)