在测试我的程序时,我不断收到此错误:
1. Encrypt a file
2. Decrypt a file
----> 1
Enter the filename you'd like to encrypt: test
Traceback (most recent call last):
File "./encrypt.py", line 71, in <module>
Main()
File "./encrypt.py", line 58, in Main
filename = input("Enter the filename you'd like to encrypt: ")
File "<string>", line 1, in <module>
NameError: name 'test' is not defined
这是我的Main()函数的代码:
def Main():
print("1. Encrypt a file")
print("2. Decrypt a file")
choice = str(input("----> "))
if choice == '1':
filename = input("Enter the filename you'd like to encrypt: ")
password = input("Enter a password used for the encryption tool: ")
encrypt(getKey(password), filename)
print("File has been encrypted.")
elif choice == '2':
filename = input("Enter the filename you'd like to decrypt: ")
password = input("Enter the password used for the encryption of this file: ")
decrypt(getKey(password), filename)
print("File has been decrypted. Note that if the password used in the encryption does " \
+ "not match the password you entered in, the file will remain encrypted.")
else:
print("Invalid option. Closing the program...")
我正在使用简单的input()方法来获取我的数据(例如,测试&#39;),它一直告诉我在运行时输入的任何信息,我输入的名称没有定义。我没有看到任何格式错误,语法错误等。
答案 0 :(得分:2)
您将要使用raw_input()
而不是input()
。 input
尝试运行它作为Python表达式获取的表达式,而raw_input
返回一个字符串。这是在Python 2.x中; 3.x raw_input
中不存在。
当你得到NameError
时,它会尝试将输入作为表达式运行,但test
不存在。
答案 1 :(得分:1)
事实证明我的linux发行版有python 2.7.12和python 3.5.2。显然系统默认为python 2.7.12而不是更新的版本,所以我修改了它:
#!/usr/bin/python
为:
#!/usr/bin/python3
答案 2 :(得分:0)
它不断告诉我在运行时输入的任何信息,我刚刚输入的名称未定义。我没有看到任何格式错误,语法错误等。
您可能正在使用Python 2.x.您应该使用:raw_input(..)
代替input(..)
答案 3 :(得分:0)
input
函数将您输入的任何内容视为python表达式。您正在寻找的是raw_input
函数,它将您的输入视为字符串。
切换input
的所有raw_input
,您应该没问题。