2012-04-10 228 views
0
FileName = 'Binarydata.dat' 
BinaryFile = open(FileName, 'r') 
for '0' in BinaryFile: 
    print('') 
else: 
    print('@') 
BinaryFile.close() 

我在嘗試運行此代碼時收到錯誤SyntaxError - can't assign to literal。這只是代碼的一小部分。其餘的工作正常。我無法弄清楚爲什麼這不起作用。Python錯誤 - 無法分配到文字

+3

你到底想要什麼?使用「0」作爲for-each變量沒有特別的意義...? – FatalError 2012-04-10 14:38:16

+0

你要找的是BinaryData中的x:如果x是0:print('') – Mouseroot 2012-04-10 14:38:41

+2

'我找不出爲什麼這樣不行。'那麼也許你可以嘗試http://learnpythonthehardway.org/ – Simon 2012-04-11 12:08:53

回答

14
for '0' in BinaryFile: 

如果你有'0'應該是一個變量,而不是文字。

也許你的意思做的是:

for line in BinaryFile: 
    if line == '0': 
    print('') 
    else: 
    print('@') 
+0

還要注意:'對於BinaryFile中的x:' - 每個'x'將是文件中的一行,而不是一個字節。 – 2012-04-10 14:42:49

+0

謝謝,不確定。 – Richante 2012-04-10 14:43:28

+0

除非你用rb而不是r打開文件 – Mouseroot 2012-04-10 14:43:52

1

如果您正在尋找'0',那麼你可以這樣寫:

for ch in BinaryFile: 
    print('' if ch == '0' else '@') 

記住:Python中的for是的for-each循環。必須有一個變量綁定在可迭代的內容上。

3

大概在整個堆棧跟蹤您看到的是這樣的:

for '0' in BinaryFile: 
SyntaxError: can't assign to literal 

當過BinaryFile蟒蛇循環,它每次迭代分配給一個變量。在這種情況下,您試圖將第一次迭代指定爲'0',這是一個字符串。

它應該是這樣,而不是:

for a_variable in BinaryFile: 

在這種情況下,BinaryFile的元素將被分配到a_variable。在下一次迭代中,下一個變量將被分配給a_variable。

這將繼續,直到對象BinaryFile引發StopIteration錯誤,此時迭代結束。

相關問題