关于PySide2的QFileDialog保存文件的重名不覆盖问题

关于PySide2的QFileDialog保存文件的重名不覆盖问题

最近在使用PySide2开发时出现了一个问题,当我导出文件时,如果存在同名文件的情况下,我依旧以同名保存,正常效果应该是新保存的文件会将旧文件覆盖掉,只留下新的文件。

但是我的代码效果却出现了以下情况:

正常save文件是成功的,没有报错,但是当我进入文件夹查看时却发现,那个同名文件的保存日期显示它依然是原来的那个旧文件,新保存文件并没有将它覆盖掉。

那么问题来了,既然没有报错,那我新的文件哪里去了呢?

查看整个文件夹后发现,哦,新文件确实导出了,但是,它完全没有了后缀名。要是我手动给它加一个后缀,即

filePath = filePath + ".txt"

它又以给自己已有后缀的文件名的情况下,又再追加一个后缀名的形式给导出了。

这是我的代码:

filePath, fileType = QFileDialog.getSaveFileName(self, self.tr("export file"), '',
                                                 self.tr("txt (*.txt)"), options=QFileDialog.DontUseNativeDialog)

一番检查尝试后发现,就是因为使用了options属性,DontUseNativeDialog会导致使用的是PySide2自带的文本对话框,而非直接调用本地文件资源管理器。电脑的文本资源管理器是自带了重名覆盖的功能的,所以我们导出文件正常。

但是我因为某些原因必须使用DontUseNativeDialog(其实是如果不加参数,调用文本对话框的时候会导致软件崩溃,加上参数可以规避这种情况),就只能自己手动规避了,自己对其做一层判断,检查过后终于生效。

filePath, fileType = QFileDialog.getSaveFileName(self, self.tr("export file"), "", self.tr("txt (*.txt)"), 
                                                 options=QFileDialog.DontUseNativeDialog)
        if not filePath:
            return

        if fileType == "txt (*.txt)" and filePath[-4:] != ".txt":
            filePath = filePath + ".txt"

这个方法虽然笨了点,但是有效,先记录下来。

如果有朋友能给我提供更好的思路,欢迎留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值