我在Python 2.7 一個非常令人費解的問題,我用Notepadd ++ 發展的不超過25行的腳本,Python的 運行時,它給在不同線路上的我「語法錯誤」後腳本重新運行它 即使該行在解釋器上運行正常。 例如,在簡單的語句中,例如爲變量賦值,對該變量的第二個或第三個賦值給了我語法錯誤。 我在解釋器上逐行逐行輸入,每次都成功執行 ,在最後一行中得到正確的結果。 我試圖重新編寫並運行相同的腳本(逐行復制)IDLE(這也給我隨機行語法錯誤),最後訴諸微軟記事本。沒有更好的。 請你的幫助讓我理解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
# >>>
Auuuuugh!非常謙卑和歉意。我的錯誤出現在打印聲明中,最後缺少括號。而且,由於我正在使用它的單個副本更新打印語句,因此該錯誤將隨機出現(並增加行)在我的腳本上。線索是由John la Rooy發佈的,他發佈了這個消息,錯誤可能會「出現在遠處」。謝謝!它出現在下一行(鍵=)完全拋棄我。 再一次,非常感謝......「學習正在犯錯誤......」(請不要太多)
把至少一行給你的錯誤和錯誤的確切文本。這聽起來很牽強,但目前沒有辦法評估你的說法。 –