[英]Python AttributeError: 'NoneType' object has no attribute 'fileno'
当我试图打印财务数据时:
import datetime as dt
import matplotlib.pyplot as plt
from matplotlib import style
import pandas as pd
import pandas_datareader.data as web
import numpy as np
style.use('ggplot')
start=dt.datetime(2000,1,1)
end=dt.datetime(2016,12,31)
df= web.DataReader('ERIE', 'google', start, end)
print(df.head())
我得到 df 不存在的错误,或者更具体地说:
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
print(df.head(5))
File "C:\Python34\lib\site-packages\pandas\core\base.py", line 51, in __str__
return self.__unicode__()
File "C:\Python34\lib\site-packages\pandas\core\frame.py", line 582, in __unicode__
width, _ = console.get_console_size()
File "C:\Python34\lib\site-packages\pandas\io\formats\console.py", line 77, in get_console_size
terminal_width, terminal_height = get_terminal_size()
File "C:\Python34\lib\site-packages\pandas\io\formats\terminal.py", line 33, in get_terminal_size
return shutil.get_terminal_size()
File "C:\Python34\lib\shutil.py", line 1071, in get_terminal_size
size = os.get_terminal_size(sys.__stdout__.fileno())
AttributeError: 'NoneType' object has no attribute 'fileno'
我不知道如何解决这个问题,因为这段代码似乎与其他尝试它的人一起工作。 我只是一个初学者,所以任何帮助将不胜感激。 谢谢! 你好,特里斯坦
这是shutil
库中的已知错误:
https://bugs.python.org/issue24920
https://bugs.python.org/issue24966
看来,您应该更改开始编写代码的方式(从 GUI 或从 shell 和类似的)
这不是一个完整的解决方案,但至少是一种解决方法。
您可以改用shutil 的get_terminal_size() 。 还有一个可用于 python 2 的反向移植。
我在下面的代码中遇到了同样的问题:
import pandas as pd
dict = {
"country" :["Brazil", "Russia", "India", "China", "South Africa"],
"capital" :["Brasilia", "Moscow", "New Delhi", "Beijing", "Pretoria"],
"area" : [8.516, 17.10, 3.286, 9.597, 1.221],
"population" : [200.4, 143.5, 1252, 1357, 52.98] }
brics = pd.DataFrame(dict)
brics
一个简单的技巧是将你的工作转移到 Python shell,而不是 IDLE(在我的例子中,在 IDLE 上工作是问题所在,但同样的代码在 Python Shell 上运行得很好)
就我而言,我在终端中使用了一个屏幕会话来为 python 启动 spyder IDE。 我不小心终止了屏幕会话,但 spyder 一直在处理这个错误。 在新的屏幕会话中重新启动 spyder 后,错误消失了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.