【问题标题】:Python AttributeError: 'NoneType' object has no attribute 'fileno'Python AttributeError:“NoneType”对象没有属性“fileno”
【发布时间】:2018-03-17 02:52:25
【问题描述】:

当我尝试打印财务数据时:

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'

我不知道如何解决这个问题,因为这段代码似乎正在与其他尝试它的人一起工作。我只是一个初学者,所以任何帮助将不胜感激。 谢谢! 问候,特里斯坦

【问题讨论】:

  • 在这种情况下看起来 sys.__stdout__None。不知道为什么...如果您将import sys 添加到您的标题怎么办?同样的问题?

标签: python python-3.x pandas attributeerror datareader


【解决方案1】:

shutil 库中的已知错误:

https://bugs.python.org/issue24920

https://bugs.python.org/issue24966

看来,你应该改变你开始编码的方式(从 GUI 或从 shell 等)

【讨论】:

  • 成功了!谢谢。
  • @RomanMindlin 你能解释一下你的答案吗?我不明白你的意思是“你应该改变你开始编码的方式(从 GUI 或从 shell 和类似的)”。
  • @BsHe 您应该尝试为您的代码更改环境,从 shell 执行它,而不是从 IDLE 执行。另外,尝试更新python版本,这个问题在3.5修复了
  • @RomanMindlin 我还注意到从 shell 执行解决了这个问题。我使用的是 3.5 版。问题可以通过定义sys.__stdout__变量link来解决
【解决方案2】:

这不是一个完整的解决方案,但至少是一种解决方法。

您可以改用shutil 的get_terminal_size()。还有一个 backport 可用于 python 2。

【讨论】:

    【解决方案3】:

    我在下面的代码中遇到了同样的问题:

    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 上完美运行)

    【讨论】:

      【解决方案4】:

      在我的例子中,我在终端中使用了一个屏幕会话来启动 python 的 spyder IDE。我不小心终止了屏幕会话,但 spyder 一直在处理这个错误。在新的屏幕会话中重新启动 spyder 后,错误消失了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-22
        • 2017-12-28
        • 2017-10-05
        • 2019-01-10
        • 2013-08-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多