我很喜欢使用pathlib在蟒蛇路径管理,但采用这种封装的缺点是很多的命令,像shutil.copy
,.move
,内建open
需要一个字符串,而不是一个PosixPath对象,从而为错误
TypeError: coercing to Unicode: need string or buffer, PosixPath found
Run Code Online (Sandbox Code Playgroud)
逻辑解决方案当然是使用str()
.
我的问题是如何修改pathlib对象,以便调用open(pathlib.PosixPath)
就可以在不使用的情况下工作str()
.
@Navith的答案就是你现在应该在python 3.4中做的.但是,在python 3.6中提出并接受了PEP-519来解决这个有效的问题.
该PEP为类提出了一种协议,该协议表示能够提供str或字节表示的文件系统路径.还建议对Python的标准库进行更改以适当地利用该协议以便于使用路径对象,其中历史上仅接受str和/或字节文件系统路径.
所以在python 3.6中,你引用的标准库方法现在接受Paths,你的问题的答案是使用python 3.6.