以下两个代码片段单独放入REPL中时可以正常工作:
1)
with open('/shared/errorStatsByDowAndHour.tsv','r') as f:
for line in f:
phs.append([twodec(l.strip()) for l in line.split('\t')])
for p in phs:
print p
['1-00', '34550', 38493.75, '42154', 2745.61]
['1-01', '24087', 32319.5, '42742', 6985.69]
['1-02', '13853', 20238.25, '27358', 5407.19]
['1-03', '14686', 20409.0, '27999', 4798.54]
..
但是,当组合如下时:
with open('/shared/errorStatsByDowAndHour.tsv','r') as f:
for line in f:
phs.append([twodec(l.strip()) for l in line.split('\t')])
for p in phs:
print p
生成以下错误:
>>> with open('/shared/errorStatsByDowAndHour.tsv','r') as f:
... for line in f:
... phs.append([twodec(l.strip()) for l in line.split('\t')])
... for p in phs:
File "<stdin>", line 4
for p in phs:
^
SyntaxError: invalid syntax
>>> print p
File "<stdin>", line 1
print p
^
IndentationError: unexpected indent
解释是什么?
每当您在交互式解释器中的缩进块之后返回到顶层时,您需要输入一个空行以指示Python现在可以执行该块。
如果您的目标是能够将代码从脚本复制/粘贴到交互式解释器并运行它,您可以执行以下操作:
exec r'''
[copy/paste your code here]
'''
确保先检查代码中的文档字符串和其他可能会搞砸的东西。您也许可以切换报价类型以使其正常工作。