【问题标题】:Python: os is NoneTypePython:操作系统是无类型
【发布时间】:2017-01-07 16:19:59
【问题描述】:

在下面一行

def run_job_subtype(self):
    print os
    if os.path.exists(self.abs_export_dir):
        return "incr"
    else:
        return "full"

我得到如下回溯:

"AttributeError: 'NoneType' object has no attribute 'path'

打印操作系统:

<module 'os' from '/usr/lib/python2.7/os.pyc'>
<module 'os' from '/usr/lib/python2.7/os.pyc'>
<module 'os' from '/usr/lib/python2.7/os.pyc'>
None
None
None
None
None
None
None

突然间它被设置为无
我不认为我以编程方式设置为 None..
除了程序员之外,是否有可能将 os 设置为 None?
或者除了手动查看数千行代码之外的任何调试方法?

这个函数在线程中调用

还有一件奇怪的事……我把代码改成了:

def run_job_subtype(self):
        print os
        print sys.modules['os']

        if os.path.exists(self.abs_export_dir):
            return "incr"
        else:
            return "full"

追溯

print sys.modules[\'os\']
', "AttributeError: 'NoneType' object has no attribute 'modules'

而且我也在导入 sys.我绝对不会为 os 和 sys 创建变量...

有什么东西正在擦除所有的导入?

【问题讨论】:

  • 您的代码中有一些变量os 设置为等于None
  • 某处,不知何故,您已将None 分配给名为os 的变量,从而隐藏了模块名称。
  • 尝试生成一个足够完整的示例,以便有人可以从问题中复制并粘贴它并自己查看问题。在stackoverflow.com/help/mcvesscce.org 讨论了这样做的方法(以及动机,除了“未能向 MCVE 提供以代码为中心的问题使其有资格被关闭”)。
  • @CharlesDuffy 我不问出了什么问题。我问什么可能是错的。我已经展示了这个问题,并且无需提供可重现的代码,ppl 的编码经验可以让人们事后了解可能是什么导致此类错误
  • @ealeon, ...并且网站规则使这种形式的问题(“请转储一堆猜测”)可以关闭。你应该做你的功课——在这种情况下,“你的功课”意味着构建一个复制器。

标签: python python-2.7


【解决方案1】:

错误正是问题所在 - 您设置了一个名为 os 的变量,因此在运行 os.path.exists() 时,您试图在字符串、整数或其他变量上运行 .path

【讨论】:

  • 你能显示你所有的代码吗?只用一行很难...... :)
  • @BoboCarr, ...仅供参考,一般做法是关闭不足以明确回答的问题,而不是提供除 OP 外无法评估其正确性的答案.有一个专门针对这种问题类型的关闭方法:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身。 - 在这种情况下,缺少“重现所需的最短代码”(因为给出的代码不会重现问题)。
  • @ealeon:我们看不到您的代码。就在您尝试使用os.path 之前,您将os 设置为None。这可能有多种方式,请参阅Naming and Binding section 了解您可以设置os 的所有方式。代码可能正在寻找本地名称、闭包名称或全局名称os。没有您的代码,我们无法告诉您任何其他信息。
  • @CharlesDuffy 关闭这个问题,因为它当前 没有提供足够的信息来解决,但对任何人都没有帮助。最好向 OP 询问该信息并让他编辑他的帖子以包含它,这就是我看到的几乎所有时间都在做的事情。
  • @Tagc:这个问题对未来的访问者没有帮助,这就是 Stack Overflow 的重点。搁置一个问题也是一种暂时的状态;如果添加了 MCVE,我们可以轻松地重新打开。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 2015-01-12
  • 2014-01-23
  • 2011-07-28
相关资源
最近更新 更多