Python 重影脚本完成百分比

Python 重影脚本完成百分比,python,parameters,formatting,ghostscript,Python,Parameters,Formatting,Ghostscript,我有一个使用Python和GhostScript的项目。目前,我有一个几百页的PDF文件,我需要采取这一PDF文件,并分为TIF文件的网页,我有代码,并正确运行,但由于这个程序可能需要一些时间来完成,我想有一个输出给用户显示在这个过程中有多远 gs_appdir = 'C:\\Program Files\\gs\\gs9.10\\bin\\' os.chdir(gs_appdir) args = "-o \""+wkgdir+"Images\\Image_%03d.tif\" -sDEVICE=

我有一个使用Python和GhostScript的项目。目前,我有一个几百页的PDF文件,我需要采取这一PDF文件,并分为TIF文件的网页,我有代码,并正确运行,但由于这个程序可能需要一些时间来完成,我想有一个输出给用户显示在这个过程中有多远

gs_appdir = 'C:\\Program Files\\gs\\gs9.10\\bin\\'
os.chdir(gs_appdir)
args = "-o \""+wkgdir+"Images\\Image_%03d.tif\" -sDEVICE=tiffg4 -q -NODISPLAY -r200x200 -s \""+inPDFFile+"\""
os.system("gswin64c.exe %s" % args)
当我从参数中取出-q参数时,它会显示给我,但是它会逐行显示:

第1页,共xxxx页
第2页,共xxxx页
第3页,共xxxx页
…等等

我想做一些类似的事情:

print "\r[ Preparing Images ] %s%%" % ((img+1)*100/imgcount),

它将在同一行上打印百分比,但是我不太确定如何使用GhostScript实现这一点。任何建议都会非常有用。

嗯,我想基本上你不能这么做。通过一段PostScript编程,您可以得到一条您想要传递的形式的消息,但它将在stdout上,因此如果您使用-q运行,那么它将被抑制

首先,您必须使用4个Ghostscript扩展来打开PDF文件,开始PDF解释,计算页数,然后输入一个循环来呈现每个页面并发出一条消息。然后关闭一切。通常,Ghostscript中的便利例程会为您处理所有这些,但它们不会发出您想要的消息

即使它是在同一条线上发射的,我想你也不会喜欢它。您似乎假设后面的几行会简单地删除(写在上面)前面的几行,我认为情况并非如此,尽管这确实取决于您使用的命令shell(因此也取决于操作系统)。我注意到您似乎正在使用Windows,您可能可以使用一个\r\n我不确定的工具来获得此效果


从根本上说,如果您想这样做,您必须编写一个新的应用程序,使用API而不是作为外部进程执行Ghostscript,然后自己处理stdout回调。

这正是我所担心的。我认为我的用户只需接受1-2分钟的等待(可能会为他们发送一条预消息)。就\r而言,您是正确的,不是所有人都会接受,但是对于这个特定的设置,它是有效的。@user3232819:您只需要更改您的方法即可。您可以在流程运行时获得流程输出,而无需等待流程完成其任务。看看这个://如果您以建议的方式调用Ghostscript,您将能够在处理页面时从Ghostscript获得逐行输出。我在.NET中做了一件类似的事情,它也起了作用。当您获得逐行输出时,解析每一行以获得“当前页面”和“总页面”,并计算您的进度值。