无法运行简单" if__name__ ==' __ main __':"使用Canopy的语法

时间:2015-06-12 16:54:50

标签: python canopy

我从互联网上获得了以下密码生成器(Test.py),我认为在Canopy中运行起来很容易,但它似乎根本不起作用。

我一直都会收到无效的语法错误。我将代码发送给我的同事,并说她在Linux机器上使用简单的i-Python终端工作正常。

#!/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

我也尝试使用整个路径名,但似乎没有任何作用!我很沮丧,因为它看起来很容易。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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

如果你想在Canopy内部运行它(它是一个ipython shell,而不是一个终端窗口),运行这样的文件

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