Python 无法运行simple";如果名称为'__main';:&引用;使用树冠的语法

Python 无法运行simple";如果名称为'__main';:&引用;使用树冠的语法,python,canopy,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('Usag

我从互联网上获得了下面的密码生成器(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:])

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

我猜您正在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

“我总是遇到无效的语法错误。”这是一个很好的起点。让我们看看堆栈跟踪。另外,您使用的是什么版本的Python?我刚刚尝试了您的代码,结果发现
您的新密码是:5HhJk+,0
。我认为这是一个预期的输出。如果这是导致语法错误的原因,为什么除了
if\uuuu name\uuu=='\uuuu main\uuuu'
行和一些虚拟内容之外还需要其他内容呢?Ben说了什么。如果这不是正在发生的事情,那么正如其他人所说,你需要展示实际发生的事情。如果您实际上在Canopy内部,并且在编辑器中打开了文件,只需单击Run按钮。这将向您显示ipython run命令。按向上箭头调用命令,添加命令行参数,然后按Enter键。还可以从“运行”菜单中设置命令行参数。
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
In [1]: %run Test.py 2 2 2 2
Your new password is: NDt1q.+1