我正在尝试在我的文件系统上移动一些文件。我想使用 Python 3 的 Pathlib 来做到这一点,特别是Path.rename。
说我想要移动Path('/a/b/c/d')到Path('/w/x/y/z')。
Path('/a/b/c/d').rename(Path('/w/x/y/z'))
Run Code Online (Sandbox Code Playgroud)
给
FileNotFoundError: [Errno 2] No such file or directory: '/a/b/c/d' -> '/w/x/y/z'
Run Code Online (Sandbox Code Playgroud)
我可以解决这个问题
os.makedirs(Path('/w/x/y', exist_ok=True)
Path('/a/b/c/d').rename(Path('/w/x/y/z'))
Run Code Online (Sandbox Code Playgroud)
但这不如老式os优雅,后者有一个名为renames的方法,可以为您执行此操作。有没有办法在 Pathlib 中做到这一点?
这并不理想,但类似以下内容会起作用
from pathlib import Path
def ensure(path):
path.parent.mkdir(parents=True, exist_ok=True)
return path
Path('a/b/c/before.txt').rename(ensure(Path('x/y/z/moved.txt')))
Run Code Online (Sandbox Code Playgroud)
Pathlib.Path.mkdir 不返回任何东西,所以看起来像这样的某种包装是必要的。
pathlib.Path.mkdir()可用:
newname = Path('/w/x/y/z')
newname.parent.mkdir(parents=True, exist_ok=True)
Path('/a/b/c/d').rename(newname)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2103 次 |
| 最近记录: |