【问题标题】:Un suported operand type(s)不支持的操作数类型
【发布时间】:2021-08-17 22:11:01
【问题描述】:
home = os.getenv("HOME")
cokifile = home + "/.cookies"

错误是

Traceback(最近一次调用最后一次): 文件“c:\Users\Aaryan\Comple Python Cource\GUI chat application\ex.py”,第 29 行,在 cokifile = home + "/.cookies" TypeError:+ 的不支持的操作数类型:“NoneType”和“str”

【问题讨论】:

  • 你能检查一下“home”的输出吗?

标签: python


【解决方案1】:

问题是主变量的值为None,而运算符+ 不支持None。 当您想进一步使用它时,您需要验证home 的值。比如下图。

home = os.getenv("HOME")
if home is None:
    home = ""
cokifile = home + "/.cookies"

编辑:我刚刚发现os.getenv 有第二个参数default,因此如果未设置 env 变量,您可以指定一个默认值:

home = os.getenv("HOME", default="")
cokifile = home + "/.cookies"

【讨论】:

  • 天哪……你真是个天才兄弟……我搜索了一个小时,你就解决了……非常感谢你……
  • 不客气。如果它解决了您的问题,您可以接受答案。
【解决方案2】:

您不应该自己构建路径。正如您所发现的,很容易做出毫无根据的假设,而且该技术是特定于平台的。

改为这样做:

os.path.expanduser("~/.cookies")

【讨论】:

    【解决方案3】:

    在运行代码时,您肯定没有任何名为“HOME”的环境变量。所以,`os.getenv("HOME") 将返回 None。

    因此,使用 + 运算符时,None 和 'str' 不兼容。

    【讨论】:

      猜你喜欢
      • 2017-07-15
      • 2020-02-29
      • 2011-03-08
      • 2016-11-28
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多