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()”的主要内容,如果未能解决你的问题,请参考以下文章
os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)) 是啥意思? Python