【问题标题】:Recreating file with QImage img.save just after os.remove doesn't update creation date在 os.remove 之后使用 QImage img.save 重新创建文件不会更新创建日期
【发布时间】:2016-03-21 09:36:51
【问题描述】:

在 Python 中,如果图像存在,我想在保存图像之前删除它,唯一的目标是更新文件的创建日期。产生问题的代码小例子:

 img = QtGui.QImage(filePath)
 os.remove(filePath)
 img.save(filePath)

这个例子并不完全是我使用的,但是当执行这个时,新保存的图像具有刚刚被删除的文件的创建日期。当我在 os.remove 和 img.save 之间设置延迟时,它没有帮助(最多尝试 3 秒),但是当我执行 QMessagebox 时,新文件实际上会获得更新的创建日期。

为什么会发生这种情况?我可以做些什么来获得新保存文件的新创建日期?

【问题讨论】:

  • this 有帮助吗?
  • 我现在正在测试它,不确定 newtime 应该是什么样子。我想像“time.localtime()”这样的东西,但后来我得到了一个错误。
  • 你试过time.time()吗?
  • 当我尝试 time.localtime() 时,问题出在其他地方,它可能确实有效。我刚刚在您发布的链接的帮助下回答了我自己的问题,谢谢。

标签: python qt


【解决方案1】:

以下是对我有用的方法,我对 Drjnkr 评论链接中给出的示例进行了小幅调整。 UTC 日期/时间现在设置为创建日期。我仍然不知道为什么 os.remove(filename) 在我之后直接重新创建文件时不会删除文件的创建日期,但这也适用于我。

def changeFileCreationTime(self, fname):
    now_utc = win32timezone.utcnow()
    winfile = win32file.CreateFile(
    fname, win32con.GENERIC_WRITE,
    win32con.FILE_SHARE_READ | win32con.FILE_SHARE_WRITE |win32con.FILE_SHARE_DELETE,
    None, win32con.OPEN_EXISTING,
    win32con.FILE_ATTRIBUTE_NORMAL, None)
    win32file.SetFileTime(winfile, now_utc, now_utc, now_utc)
    winfile.close()

【讨论】:

    猜你喜欢
    • 2020-08-23
    • 2018-04-07
    • 2013-10-10
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多