python-3.x - 将 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())
解决方案
编辑:我想你正在寻找这个:
>>> 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 或类似方法
推荐阅读
- c++ - 在 C++ 中将不同的类转换为 void* 并安全返回
- mysql - 导入带引号 ( " ) 引号 ( ' ) 的 CSV 文件 - 导入的引号类型不匹配
- android - Apk 未优化
- python - 如何为 django 自定义用户创建登录视图?
- android - 如何在 Android 上添加/使用带有 Qt C++ 的 GStreamer 二进制库?
- c++ - 将 std::variant 转换为模板类实例的 std::tuple
- java - Java 编译器已完成但未创建可执行文件?
- sharepoint - SharePoint 重复事件是随机的?
- java - 带有 SolrJ 的索引文件会阻止文件
- excel - 将 Excel / Array 数据导入数据库