2015-06-12 1 views
-2

Я получил из Интернета следующий генератор паролей (Test.py), и я подумал, что его можно будет легко запустить в Canopy, но это не похоже на работа на всех.Не удалось запустить простой синтаксис if__name__ == __ main__ ':' с помощью Canopy

Я получаю неверные синтаксические ошибки все время. Я отправляю код своему коллеге, и она сказала, что он отлично работает, используя простой терминал i-Python на своей Linux-машине.

#!/usr/bin/env python 
import random 
import sys 
import string 


def main(argv): 

    if (len(sys.argv) != 5): 
     sys.exit('Usage: simple_pass.py <upper_case> <lower_case> <digit> <special_characters>') 

    password = '' 

    for i in range(len(argv)): 
     for j in range(int(argv[i])): 
      if i == 0: 
       password += string.uppercase[random.randint(0,len(string.uppercase)-1)] 
      elif i == 1: 
       password += string.lowercase[random.randint(0,len(string.lowercase)-1)] 
      elif i == 2: 
       password += string.digits[random.randint(0,len(string.digits)-1)] 
      elif i == 3: 
       password += string.punctuation[random.randint(0,len(string.punctuation)-1)] 

    print 'Your new password is: ' + ''.join(random.sample(password,len(password))) 

if __name__ == "__main__": 
    main(sys.argv[1:]) 

Я пробовал:

$python Test.py 2 2 2 2 

Я попытался использовать весь путь, как хорошо, но ничего не похоже на работу! Я очень расстроен, потому что кажется, что это будет так просто. Любая помощь будет принята с благодарностью.

+3

«Я получаю недопустимые синтаксические ошибки все время». Хорошая отправная точка. Посмотрим на трассировку стека. Кроме того, какую версию Python вы используете? – Kevin

+0

Я только что попробовал ваш код, и оказалось, что «Ваш новый пароль: 5HhJk +, 0'. Я думаю, что это ожидаемый результат. –

+0

Зачем вам что-то нужно _but_ 'if __name__ == '__main __'' строка и некоторое фиктивное содержимое, если это то, что вызывает вашу синтаксическую ошибку? –

ответ

2

Я предполагаю, что вы используете эту команду внутри IPython

$ python Test.py 2 2 2 2 

который, как вы бы запустить скрипт, если вы были в командной строке, и это пришедшее назад с ошибкой:

In [1]: python Test.py 2 2 2 2 
    File "<ipython-input-3-5bade39d33f0>", line 1 
    python Test.py 2 2 2 2 
             ^
SyntaxError: invalid syntax 

Если вы хотите, чтобы запустить его внутри Дождя (который является IPython оболочки, а не окно терминала), запустите файл как так

In [1]: %run Test.py 2 2 2 2 
Your new password is: NDt1q.+1 
+0

Что сказал Бен. Если это не то, что происходит, то, как говорят другие, вам нужно показать, что происходит на самом деле. Если вы действительно находитесь внутри Canopy и открываете файл в редакторе, просто нажмите кнопку «Выполнить». Это покажет вам команду запуска ipython. Нажмите стрелку вверх, чтобы вызвать команду, и добавьте аргумент командной строки и нажмите Enter. Вы также можете установить аргументы командной строки из меню Run Canopy. –

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

  • Нет связанных вопросов^_^