在Python中:如何在打开文件之前验证文件是否已正确下载

时间:2014-05-29 17:50:12

标签: python

在尝试打开文件之前,有没有办法验证文件是否有效?最简单的方法是查看文件的大小是否为0字节。但是我遇到了非零文件损坏/不完整的情况(主要是因为下载中断)。我想知道在记录这些信息的每个文件中是否有一些文件头或其他“共同”位置,因此它可用于验证文件是否“完成”或者它是否应该是100%当然是......在数据方面。

后来编辑:

我使用urllib.urlretrieve(url_source,local_destination)下载文件。有没有办法在下载后验证目标文件与源文件大小相同?

1 个答案:

答案 0 :(得分:2)

文件是否有效在很大程度上取决于文件的有效性。没有任何内容表明随机字节流在没有任何上下文的情况下必然是无效的。要问"这是一个有效的文件吗?"没有任何信息应该总是导致"也许,谁知道,你能提供更多细节吗?"

例如,一种技术是指定文件的前n个字节以字节序列开头,然后任何读者只需检查前n个字节。

有很多方法可以检查文件的有效性。

在您的情况下,当您发出HTTP请求时,响应可能(或应该)包含您在名为content-length的标头中请求的内容的大小。您可以将下载的文件大小与响应发送的大小进行比较。

例如:

data = urllib.urlretrieve(url, targetPath)
msg = data[1]
print(msg.getheader("content-length"))