Возможно ли выполнение кода Python до завершения подпроцесса? - PullRequest
0 голосов
/ 28 марта 2019

Сценарий, который я написал, который объединяет несколько PDF-файлов в один, прекрасно работает на моем ПК, но, кажется, создает поврежденные 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")
...