【发布时间】:2017-10-17 13:13:24
【问题描述】:
我的原始脚本比这个大,但我发现仅此一项就会导致完全相同的错误。第一篇在这里(我认为)。如果格式不对,请见谅。
for a in range(4000):
for b in range(200):
print('4000:' + str(a))
print('201:' + str(b))
我将所有这些都视为错误。我是使用 Ipython 控制台的 Spyder。
文件“”,第 1 行,在 runfile('C:/Users/me/Documents/file.py', wdir='C:/Users/me/Documents')
运行文件中的文件“C:\Users\me\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 714 行 execfile(文件名,命名空间)
文件“C:\Users\me\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 89 行,在 execfile exec(编译(f.read(),文件名,'exec'),命名空间)
文件“C:/Users/me/Documents/file.py”,第 35 行,在 print('4000:' + str(a))
文件“C:\Users\me\Anaconda3\lib\site-packages\ipykernel\iostream.py”,第 317 行,写入 self._buffer.write(string)
ValueError: 对已关闭文件的 I/O 操作
【问题讨论】:
-
这似乎是
spyder的execfile的问题,而不是您的实际代码。尝试在非 spyder 终端中运行它... -
实际上似乎是 IPython 中的一个已知错误。你有没有机会用
sys.stdout做任何黑魔法?您使用的是哪个版本的 Ipython?它可能已在最近的版本中得到修复,您可以尝试更新 Ipython... -
是的。使用命令提示符似乎有效。谢谢
-
黑魔法?哈。不。如果这就是你的意思,没有改变任何东西。 IPython 4.2.0。但是常规的 python 控制台也出现了与 Spyder 类似的问题