处理用户文件上传时,经常遇到的一个错误就是
FileNotFoundError: [WinError 3] 系统找不到指定的路径.
原因分析
往往是我们打算将用户的文件存在比较深的目录里,但其父文件夹并不存在,就会报出这个错误。例如打算将目标文件target.jpg存在D:/foo/bar/下面,最终路径为D:/foo/bar/target.jpg。如果D:/foo/bar/不存在,就会报上述错误。
filename = "D:/foo/bar/target.jpg"
img.save(filename) # 如果D:/foo/bar/不存在,就会报错
那么怎么优雅的解决这个问题呢?
递归的查看父文件夹是否存在,如果不存在,那就先新建父文件夹 —— 这也太不优雅了。
幸好pathlib提供了开箱即用的方法。
解决方法
filename = "D:/foo/bar/target.jpg"
if not filename.parent.exists():
filename.parent.mkdir(parents=True, exist_ok=True)
img.save(filename)
利用pathlib的 mkdir(parents=True, exist_ok=True), 能够实现目录的自动创建。
其中参数parents=True表示,如果父目录不存在,则新建父目录。exist_ok=True表示,如果文件夹已存在,那么就不做任何处理,也不抛出异常。






网友评论