子进程完成之前是否可能正在执行python代码?

时间:2019-03-28 17:51:44

标签: python pdf subprocess pdfrw

我编写的脚本将多个PDF压缩为一个脚本,在我的PC上可以正常工作,但似乎仅在我的一台同事计算机上生成损坏的PDF。

我很难调试此问题,因为它需要访问他的个人计算机。但是,我认为该问题是子进程与我的临时文件清除功能之间的时间问题。该脚本将网络驱动器位置上的几个单独的PDF压缩为同一位置中的单个临时PDF。然后,它利用子过程将临时PDF复制到用户选择的位置(在本例中为“桌面”。)但是,下一行代码是我的临时文件清除例程,其中所有PDF都被删除。复制到用户桌面上。在复制过程中,清理例程是否可能执行并删除它?我有理由相信可以适当地创建临时PDF,而这似乎仅在他的计算机上发生。

这是有问题的脚本的一部分:

    #Condense Seperate PDFs to Single PDF
    writer = PdfWriter()
    for pdf in pdfs:
        if os.path.exists(pdf):
            writer.addpages(PdfReader(pdf).pages)
            pages = pages + 1
    writer.write("tempFinal.pdf")

    #Copy Final PDF to the Save Path (Users Desktop in this example)
    subprocess.call('copy "tempFinal.pdf" "'+ savePath +'" /y', shell=True, stdout=DEVNULL, stderr=subprocess.DEVNULL)

    #Clean-up all temp files.
    deleteTemp()

这是清理例程:

def cleanup(filename):
    try:
        os.remove(filename)
    except OSError:
        pass

def deleteTemp():
    #pdfs is a list of the seperate PDF files
    for pdf in pdfs:
        cleanup(pdf)
    cleanup("tempFinal.pdf")
    cleanup("temp.dxf")
    cleanup("plot.log")
    cleanup("plot.scr")

0 个答案:

没有答案