os.path.join 失败并显示“TypeError:'LocalPath' 类型的对象没有 len()”

Posted

技术标签:

【中文标题】os.path.join 失败并显示“TypeError:\'LocalPath\' 类型的对象没有 len()”【英文标题】:os.path.join fails with "TypeError: object of type 'LocalPath' has no len()"os.path.join 失败并显示“TypeError:'LocalPath' 类型的对象没有 len()” 【发布时间】:2015-01-17 23:36:53 【问题描述】:

尝试在 pytest 测试中使用“tmpdir”时出现此错误。

TypeError: 'LocalPath' 类型的对象没有 len()

【问题讨论】:

【参考方案1】:

'tmpdir' 是<class 'py._path.local.LocalPath'> 类型,传递给os.path.join 时只需将'tmpdir' 包裹在一个字符串中

示例:

os.path.join(str(tmpdir), 'my_test_file.txt')

【讨论】:

甚至:str(tmpdir / 'my_test_file.txt')【参考方案2】:

或者,您可以直接访问 LocalPath 的字符串形式作为属性。

  os.path.join(tmpdir.strpath, 'my_test_file.txt')

我曾经认为使用属性访问意味着您不会将对象转换为字符串,因此效率更高,但我认为我的假设是错误的,但是我更喜欢这种风格,更容易编写恕我直言

【讨论】:

以上是关于os.path.join 失败并显示“TypeError:'LocalPath' 类型的对象没有 len()”的主要内容,如果未能解决你的问题,请参考以下文章

python中使用os.path.join()

python的os.path.join()

os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)) 是啥意思? Python

Python中join函数和os.path.join用法

Python-路径拼接os.path.join()函数

os.path.join 与 import 语句[重复]