2013-10-28 42 views
-3

我有我想要運行的以下python腳本。 但是,每當我嘗試運行腳本時,它都會在我的命令提示符上不斷顯示錯誤消息。 錯誤消息:Python腳本,語法錯誤,無效語法

File "xor.py", line 9 
       File = open(sys.argv[1], 'rb').read<> 
       SyntaxError: Invalid Syntax 

以下是我在cmd中執行的命令:

python xor.py sample_output.txt 'what would the secret be?' 

下面是腳本:

# xor.py 
import sys 
from itertools import cycle 
file = open(sys.argv[1], 'rb').read() 
string = sys.argv[2] 
sys.stdout.write(''.join(chr(ord(x)^ord(y)) for (x,y) in zip(file, cycle(string)))) 
+2

代碼'文件=打開(SYS。 argv [1],'rb')。read()'但是錯誤說'File = open(sys.argv [1],'rb')。read()'。爲什麼? – thefourtheye

+2

請不要用變量影射內建函數,'file'和'string'對變量名都是不好的選擇。 – Kimvais

+1

添加您正在運行的確切代碼;如果這是您正在運行的代碼 - 刪除名爲'xor.pyc'的文件(它將位於與'xor.py'相同的目錄中)並再次嘗試。 –

回答

1

您沒有運行您正在編輯的代碼,而是運行與您編輯的文件不同的文件。

這是因爲在您提供的代碼中沒有語法錯誤。但是,在錯誤消息中的一個代碼語法錯誤:

File = open(sys.argv[1], 'rb').read<> 

這結束與<>,不與()。我認爲這是一個轉錄錯誤,但是你說錯誤信息確實是這樣的,儘管代碼沒有。

因此:您正在運行與正在編輯的文件不同的文件。

+0

儘管如此,它並不適合我。我不斷收到錯誤消息。 –

+1

也許'.read <>'應該讀取'.read()' – Kimvais

+0

@BurhanKhalid:不,我曾經遇到過好幾次,當人們得到我沒有得到的錯誤時,通常當他們再次嘗試時,他們不會得到它。當問題不存在時,這是一個有效的答案。但是,也許錯誤信息是正確的? –

0

你有.read<>時,你可能打算.read()

+1

注意到,但是在腳本里它是.read(),錯誤信息出現了。 –

0

首先,「文件」已被保留;即內置關鍵字無法設置爲變量的名稱。 第二,不要使用<>而不是()。語法錯誤。

可能存在的問題,如果你的代碼一樣清楚地解決。

FD =開放(sys.argv中[1], 'RB')閱讀()