gpt4 book ai didi

python - 如何使用 Python 检查文件保存是否完成?

转载 作者:可可西里 更新时间:2023-11-01 11:10:19 26 4
gpt4 key购买 nike

我正在尝试自动执行下载过程。在此我想知道,特定文件的保存是否已完成。场景是这样的。

  1. 使用 Chrome 或 Firefox(任何浏览器)打开网站地址
  2. 使用“Crtl + S”将页面保存到磁盘(我在 Windows 上工作)
  3. 现在,如果页面很大,则需要几秒钟的时间来保存。保存完成后,我想解析 html。

由于我无法控制浏览器的保存功能,所以我不知道保存是否已完成。

我想到的一个想法是使用 while 循环获取文件的 md5sum,并检查前一个计算的值,然后继续 while 循环直到上一个和当前匹配的 md5 和。我猜这行不通,因为浏览器似乎首先尝试将文件保存在 tmp 文件中,然后将内容复制到指定文件(或只是重命名文件)。

有什么想法吗?我使用 python 进行自动化,因此欢迎任何可以使用 python 实现的想法。

谢谢因陀罗 git

最佳答案

在 Windows 上,您可以尝试以独占访问模式打开文件,以检查它是否正在被其他程序使用(读取或写入)。我用它来等待服务器端完成 FTP 上传,代码如下:

def check_file_ready(self, path):
'''Check if file is not opened by another process.'''
handle = None
try:
handle = win32file.CreateFile(
path,
win32file.GENERIC_WRITE,
0,
None,
win32file.OPEN_EXISTING,
win32file.FILE_ATTRIBUTE_NORMAL,
None)
return True
except pywintypes.error, e:
if e[0] == winerror.ERROR_SHARING_VIOLATION:
# Note: other possible error codes include
# winerror.ERROR_FILE_NOT_FOUND
# winerror.ERROR_PATH_NOT_FOUND
# winerror.ERROR_ACCESS_DENIED.
return False
raise
finally:
if handle:
win32file.CloseHandle(handle)

注意:此函数会重新引发除共享冲突之外的所有 win32 错误。您应该事先检查文件是否存在或检查函数中的其他错误代码(请参阅第 15 行的注释)。

关于python - 如何使用 Python 检查文件保存是否完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2848008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com