【问题标题】:Converting os.path to pathlib module no working out as expected将 os.path 转换为 pathlib 模块没有按预期工作
【发布时间】:2020-05-05 13:04:47
【问题描述】:

我一直在尝试用新的 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.x path operating-system os.path pathlib


    【解决方案1】:

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

    >>> 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 或类似方法

    【讨论】:

    • 感谢您的回复;我无法以在 expanduser() 之前设置“p”的形式让它工作。虽然通过两次重读 pathlib 文档,我发现它可以工作
    猜你喜欢
    • 1970-01-01
    • 2018-05-25
    • 2020-07-24
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多