Python错误 - 无法分配给文字

时间:2012-04-10 14:35:32

标签: python

FileName = 'Binarydata.dat'
BinaryFile = open(FileName, 'r')
for '0' in BinaryFile:
    print('')
else:
    print('@')
BinaryFile.close() 

尝试运行此代码时收到错误SyntaxError - can't assign to literal。这只是代码的一小部分。其余的工作正常。我无法弄清楚为什么这不起作用。

3 个答案:

答案 0 :(得分:14)

for '0' in BinaryFile:

你有'0'的地方应该是变量,而不是文字。

你的意思可能是:

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

答案 1 :(得分:3)

可能在整个堆栈跟踪中你看到了类似的内容:

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

当python循环遍历BinaryFile时,它会将每次迭代分配给变量。在这种情况下,您尝试将第一次迭代分配给'0',这是一个字符串。

它应该是这样的:

    for a_variable in BinaryFile:

在这种情况下,BinaryFile的元素将被分配给a_variable。在下一次迭代中,下一个变量将被分配给a_variable。

这将一直持续到对象BinaryFile引发StopIteration错误,此时迭代结束。

答案 2 :(得分:1)

如果您正在寻找'0',那么您可以写下:

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

请记住:Python中的for是for-each循环。必须有一个变量绑定在iterable的内容上。