【发布时间】:2016-01-28 17:03:39
【问题描述】:
我在 Python 2.7 中有一个非常令人费解的问题 我使用记事本++ 开发一个不超过 25 行的脚本后,在 Python 上运行时 它在重新运行脚本的不同行时给了我“语法错误” 即使该行在解释器上运行正常。 例如,在简单的语句中,比如为变量赋值,第二次或第三次赋值给该变量会给我语法错误。 我在解释器上逐行输入的长度,每个都执行 成功,在最后一行得到正确的结果。 我试图在 IDLE 上重写和运行相同的脚本(逐行复制)(这也给了我随机的行语法错误),最后求助于 Microsoft 记事本。没有更好的。 请您的帮助将使我理解 Python 这样复杂的语言。谢谢你。 我使用 WINdows 10,脚本是对 Crypto.Hash / Crypto.cipher 的哈希和 AES 加密的测试。
我准备提供剧本的副本。
感谢你们俩的帮助。下面我发布了我的脚本,在它的最后,评论是解释器的确切响应。插入符号正确指向变量的末尾。调用 padmessage() 后的打印命令格式不正确,它在一行中。再次感谢你! ..................................................... ..
# bobo.py
def padmessage():
global message, pad
if len(message) % 16 == 0:
return
padding = 16 - len(message) % 16
message = message + pad * padding
def unpadmessage():
global message, pad
message = message.rstrip(pad)
pad = '&'
key = 'keykey'
print('\nOriginal key : %s' % key)
from Crypto.Hash import SHA256
print('\n Key : %s \nLength of key: %i' % (key, len(key))
key = SHA256.new(key).hexdigest()
print('\nHashed key %s : \nLength : %i' % (skey, len(key))
key = key[0:32]
print('\nResized key : %s \nLength : %i' %(key, len(key))
message = 'sjqwkweoewoykjjasdo' * 31
print('\nMessage : %s \nLength of message: %i ' % (message, len(message))
padmessage()
print('\nPadded message : %s \nLength of message: %s' % (message, len(message))
from Crypto.Cipher import AES
IV = key[16:32]
print('\nIV : %s \nIV length : %s ' % (IV, len(IV))
crypt = AES.new(key, AES.MODE_CBC, IV)
message = crypt.encrypt(message)
print('\nEncrypted message : %s ' % cypher)
decrypt = AES.new(key, AES.MODE_CBC, IV)
message = decrypt.decrypt(cypher)
print('\nAfter decryption : %s' % message)
unpadmessage()
print('\nAfter unpadding : %s' % message)
# My call in python27:
# execfile('bobo.py')
# The response from Python:
# Traceback (most recent call last):
# File "stdin", line 1 in <module>
# File "bobo.py", line 16
# key = SHA256.new(key).hexdigest()
# ^
# SyntaxError: invalid syntax
# >>>
啊啊啊啊!非常谦虚和抱歉。我的错误出现在打印语句中,最后缺少括号。而且由于我使用它的单个副本更新打印语句,因此错误将随机出现(并且行数增加)在我的脚本上。这条线索是由发布该线索的 John la Rooy 给出的,错误可能“出现在远处”。谢谢!它出现在下一行(key =)中,完全让我失望。 再次,非常感谢......“学习就是犯错误”......(请不要太多!)
【问题讨论】:
-
放置至少其中一行给出错误和错误的确切文本。这听起来有些牵强,但目前无法评估您的主张。
标签: python python-2.7 random syntax