无法使用 Canopy 运行 简单的 "if__name__ =='__main__':" 语法
Unable to run simple "if__name__ =='__main__':" syntax using Canopy
我从 Internet 获得了以下密码生成器 (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
我也试过使用整个路径名,但似乎没有任何效果!我很沮丧,因为这似乎很容易。任何帮助将不胜感激。
我的猜测是您 运行 在 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,而不是终端 window),运行 文件像这样
In [1]: %run Test.py 2 2 2 2
Your new password is: NDt1q.+1
我从 Internet 获得了以下密码生成器 (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
我也试过使用整个路径名,但似乎没有任何效果!我很沮丧,因为这似乎很容易。任何帮助将不胜感激。
我的猜测是您 运行 在 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,而不是终端 window),运行 文件像这样
In [1]: %run Test.py 2 2 2 2
Your new password is: NDt1q.+1