2013-12-05 3 views
0

Я новичок в Python Scripting. Я написал код в python. до сих пор он работает очень хорошо. Мне нужно знать, как я могу запустить его несколько раз, я хочу запустить весь скрипт с самого начала, если условие завершилось неудачно. Ниже приведен пример кода. Этот скрипт будет сохранен в файле с именем adhocTest.py поэтому я запустить сценарий, как показано ниже в оболочке PythonPython Exit Запуск цикла и запуск всего процесса с начала еще раз

в то время как 1 == 1: ExecFile («adhocTest.py»)

Функция основной() работает правильно до момента txt1 == 2, который получен от пользовательского ввода. Теперь, когда ввод txt1 изменяется на другой, чем 2, он выходит из сценария, потому что я дал sys.exit(), что мне нужно знать, так как я могу запустить скрипт adhocTest.py еще раз, не выходя из, если вход tx1 равен не равным 2. Я пытался найти ответ, но почему-то я не получаю ответ, который я хочу.

import time 
    import sys 
    import os 

    txt = input("please enter value \n") 

    def main(): 
     txt1 = input("Please enter value only 2 \n") 
     if txt1 == 2: 
      print txt 
      print txt1 
      time.sleep(3) 
     else: 
      sys.exit() 

    if __name__ == '__main__': 
     while 1 == 1: 
      main() 
+0

Вы пытаетесь получить вход пользователя? если это так - вы можете посмотреть [мой ответ на другой подобный вопрос] (http://stackoverflow.com/a/20261433/1561176) –

+0

Спасибо @InbarRose Нет. Я не получу никакого ввода пользователя. Это пример скрипта. Infact Я получаю значения из листа Excel. Таким образом, нет ручного вмешательства, пока я не отменил цикл, нажав ctrl C – just10minutes

+0

Основываясь на ваших комментариях к нашим предлагаемым решениям, для меня очевидно, что вы не включаете всю информацию в свой вопрос. Вы не получите ответ/решение, которое будет работать для вас, если вы не сообщите нам, включив в вопрос информацию о том, что вы пытаетесь сделать точно. Вы не можете продолжать добавлять требования и добавления после получения ответов. Если ваш вопрос не был изначально достаточно ясным, чтобы получить твердый и окончательный ответ в первый раз - это признак того, что вам нужно улучшить свой вопрос или задать новый вопрос, пользователи не будут проверять его, чтобы убедиться, что все в порядке. –

ответ

0

Я думаю, что это то, что вы хотите:

import time 
import sys 
import os 

def main(): 
    while True: 
     txt = input("please enter value \n") 
     txt1 = input("Please enter value only 2 \n") 
     if txt1 == 2: 
      print txt 
      print txt1 
      time.sleep(3) 

if __name__ == '__main__': 
    sys.exit(main()) 
+0

Это решение не дает мне возможность вводить значение для txt, если условие ложно. Когда условие ложно для txt1, сценарий должен начинаться с начального заданного значения для txt, а также – just10minutes

+0

Это не то, что пишет ваш оригинальный скрипт, но это легко изменить. - Проверьте редактирование. –

+0

Да, это была моя ошибка, я извиняюсь, что я дал main(), как результат, вместо sys.exit() Infact, я не должен был выйти из этого, я должен начать весь скрипт с самого начала. – just10minutes

0

Вы только повторно вызова main в вашем else. Вы можете повторно фактор следующим образом:

def main(): 
    txt1 = input("Please enter value only 2 \n") 
    if txt1 == 2: 
     print txt 
     print txt1 
     time.sleep(3) 
    main() 

В качестве альтернативы, просто вызовите main() (а не окружив его while петли) и переместить петлю внутри. Я хотел бы также передать txt явно, а не полагаться на обзорном:

def main(txt): 
    while True: 
     txt1 = input("Please enter value only 2 \n") 
     if txt1 == 2: 
      print txt 
      print txt1 
      time.sleep(3) 

Последнее позволяет избежать проблем с рекурсией.

+0

Извините, я отредактировал мой код, инструкция else должна выйти из main() и запустить скрипт с самого начала. – just10minutes

+0

Затем просто переместите все в цикл 'while' в' main() ', как и ответ Inbar Rose. Вам не нужно перезапускать сценарий. – jonrsharpe

+0

Вы хотите сказать, что мне нужно жестко указать значение для txt? но в моем фактическом коде часть txt реализуется для копирования файла из одного места в другое, а часть main() вводит несколько значений в этот лист, а также оценивает несколько значений в нем. Когда оценка возвращает false, я закрою файл и получаю новый файл, запустив скрипт с начала – just10minutes

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