首页 > 解决方案 > 将 os.path 转换为 pathlib 模块没有按预期工作

问题描述

我一直在尝试用新的 pathlib 模块替换 os.path。在这些行中,os.path 每次都可以正常工作,而 Pathlib 模块会带来错误:

Path' and 'str'
[!] send_logs // Error.. ~ unsupported operand type(s) for +: 'PosixPath' and 'str'

这样做的主要目的是将文件写入该文件夹;使用 Path.is_dir(log_dir) 返回 True。通过 pathlib 模块尝试此操作会带来错误。我试图找到其他来源以获得答案,并将 PosixPath 作为一个单独的变量用于 expanduser;无济于事我被带到这里

我很抱歉,因为我是新手,这是我的第一个“项目”之一!非常感谢所有帮助。我也遇到过类似的问题,但他们的目标是找到主目录,即 Path.owner(Path.home())

#log_dir = os.path.expanduser('~') + '/Downloads/'   --- commented out for pathlib/path
p = PosixPath('~' + '/Downloads/')
log_dir = Path.expanduser(Path(p))

感谢您提供的帮助。设法让它与单行一起工作:以与 os.path.expanduser() 相同的方式

log_dir = str(PosixPath('~' + '/Downloads/').expanduser())

标签: python-3.xpathoperating-systemos.pathpathlib

解决方案


编辑:我想你正在寻找这个:

>>> p = PosixPath('~/films/Monty Python')
>>> p.expanduser()
PosixPath('/home/eric/films/Monty Python')

请记住 pathlib.Path(somepath) 返回一个 pathlib 对象,而不是字符串。要将 pathlib 对象连接到字符串,请使用

str(pathlib.Path(somepath))+"somepath"

或在pathlib文档中查找 .str 或类似方法


推荐阅读