2016-07-21 5 views
0

Я написал приложение в Python 2.7, которое извлекает длину медиафайлов с помощью coppy. Если я запустил его из командной строки, все будет хорошо; но после замораживания кода, когда я запускаю его, консольное окно немедленно закрывается. Я пробовал cx_freeze, pyinstaller и py2exe, все с одинаковыми результатами. Что-то не так с моим кодом, или это проблема с coppy? Я тестирую Windows 10, это будет использоваться в Windows 7 в конце. Вот код:Python - Консоль закрывается после того, как код был заморожен.

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

# Video-Audio Length Retriever 
# 
# Version: 0719A 
# 
# Author: Simon Lachaîne 


import codecs 
from moviepy.editor import VideoFileClip, AudioFileClip 
import os 


directories = [] 


def read_directories(): 
    global directories 
    directories_txt = raw_input("Enter the path and name of the text file containing the source directories: ") 

    with codecs.open(directories_txt, "r", encoding="utf8") as source_dirs: 
     directories = [line.rstrip() for line in source_dirs] 


def write_text(report, text2save): 
    with open(report, "a") as report: 
     report.write(text2save) 


def check_duration(): 
    for directory in directories: 
     for root, dirs, files in os.walk(directory): 
      os.chdir(root) 
      for fichier in files: 

       try: 
        video = VideoFileClip(fichier) 

        m, s = divmod(video.duration, 60) 
        h, m = divmod(m, 60) 

        length = fichier + " ; " + "%02d:%02d:%02d\n" % (h, m, s) 
        write_text(durations_report, length) 
        print "Processed file " + fichier 

       except IOError: 
        pass 

       except KeyError: 
        try: 
         audio = AudioFileClip(fichier) 

         m, s = divmod(audio.duration, 60) 
         h, m = divmod(m, 60) 

         length = fichier + " ; " + "%02d:%02d:%02d\n" % (h, m, s) 
         write_text(durations_report, length) 
         print "Processed file " + fichier 

        except IOError: 
         pass 


read_directories() 
durations_report = raw_input("Enter the path and name of the report to create: ") 
check_duration() 

ответ

1

Вы можете запустить замороженный код из командной строки, чтобы просмотреть сообщение об ошибке.

Что касается pyinstaller, я не вижу крючка в папке hooks для видеоигр и, скорее всего, это не было включено в замороженную версию. Вы можете добавить его (или что-нибудь еще, что может отсутствовать) в качестве скрытого импорта: https://pythonhosted.org/PyInstaller/when-things-go-wrong.html?highlight=hidden#listing-hidden-imports

+0

Спасибо за ваш ответ. Ошибка заключается в том, что «система не может найти указанный путь», которые приводят к видеоролике \ video \ fx, поэтому проблема заключается в том, что видеоролик не включен в замороженное приложение. Я указал его в моем сценарии установки для cx_freeze, я постараюсь сделать то же самое с pyinstaller. Учитывая, что мой вопрос ответил, поскольку вы предоставили мне средства для решения моей проблемы. –

Смежные вопросы