如何使用 Pyside2 删除整个目录?

Posted

技术标签:

【中文标题】如何使用 Pyside2 删除整个目录?【英文标题】:how to delete an entire directory with Pyside2? 【发布时间】:2021-02-05 09:03:29 【问题描述】:

我有一个 QFileSystemModel,可以使用 QFileSystemModel.rmdir(index) 删除空目录。

有没有办法用 Pyside2 删除非空目录?

我可以shutil.rmtree()删除非空目录,但由于我使用Qt,我倾向于使用Qt方法。如果存在的话。

【问题讨论】:

我从未使用过 QFileSystemModel,但看了一眼 rmdir 之后,我没有看到任何暗示它只删除空目录的东西。您确定不是目录中的一项权限不足的问题吗? 我找到了解决办法:QDir.removeRecursively() @g2m.agent QFileSystemModel 的rmdirQDir.rmdir() 相同:“rmdir() 成功的目录必须为空”。既然您已经解决了它,我建议您创建自己的答案并通过相关文档的链接来解释差异。 【参考方案1】:

我的解决方案在 QFileSystemModel 之外。采用 QDir.removeRecursively()

def del_folder(self, checked, index):
    if not index.isValid():
        return

    model = index.model()
    path = model.fileInfo(index).absoluteFilePath()
    dir1 = QtCore.QDir(path)
    dir1.removeRecursively() # remove all.

【讨论】:

以上是关于如何使用 Pyside2 删除整个目录?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pyside2 插槽函数共享数据?

linux下如何删除整个文件夹?

如何使用 PySide2 在 matplotlib 中显示图形?

如何在 PySide2 中正确使用 CSS

如何使用 PySide2 实现响应式画廊视图

如何断开 PySide2 中的按钮单击信号?