проблема с "subprocess.Popen" ПОСЛЕ make .exe файла - PullRequest
0 голосов
/ 01 февраля 2020

я пытаюсь конвертировать mp3 в mp4 с помощью ffmpeg (командная строка), все хорошо, и программа работает правильно. У меня есть один индикатор выполнения и обработать его из этой функции, прочитав вывод командной строки ffmpeg

cls_wnd.pbar_step(line.lower())

, но после того, как make (single) .exe файл с программой pyinstaller не запустился и ничего не конвертировал

        def _cli(self ,cls_wnd ,cmd):
            errors = False
            cmd_output=""

            line=''
            try:
                    p = subprocess.Popen(cmd ,stdout=subprocess.PIPE ,
                                              stderr=subprocess.STDOUT ,
                                              universal_newlines=True ,
                                              shell=False ,
                                              creationflags = subprocess.CREATE_NO_WINDOW)

                    for line in p.stdout:
                            if cls_wnd.bt02.cget('text').lower()!="cancel":
                                    p.kill()
                                    return cmd_output, True ,'cancel'
                            cmd_output+=line
                            if line.lower().find('duration:')>-1 or line.lower().find('frame=')<1:
                                    cls_wnd.pbar_step(line.lower())
                            cls_wnd.root.update()

                    stdoutdata, stderrdata = p.communicate()
                    if p.wait() != 0:
                            p.kill()
                            return cmd_output, True ,line
                    p.kill()
                    return cmd_output, errors ,' '
            except OSError as e:
                    p.kill()
                    return cmd_output,True,' exit from except '
            return '',True,'exit from _cli end'

cmd выглядит так

cmd='ffmpeg -y -loop 1 -i 1.jpg -i 1.mp3 -c:a copy -c:v libx264 -shortest 1.mp4'

make .exe файл с этой командой

pyinstaller -w --onefile  mp3tomp4.py --onefile

если я не использую '-w', все хорошо ... но это уродливо черный cmd- windows показан, и я не могу закрыть или скрыть его

...