从网络读取二进制文件数据的奇怪问题

时间:2020-10-02 11:27:33

标签: python windows file

我有一个非常简单的python脚本,该脚本读取文件数据并计算读取的字节数。

#!/usr/bin/env python

import sys, os

file_path = sys.argv[1]
expected_size = os.stat(file_path).st_size
read_size = 0
with open(file_path, 'rb') as source:
    while True:
        chunk = source.read(1024 ** 2)
        if not chunk:
            break
        read_size += len(chunk)
print(expected_size, read_size)

有效地,此脚本使用两种不同的方法来计算文件大小(以字节为单位),而且很奇怪,有时报告的数字也有所不同。

我的同事(他正在使用安装了python 3.5的Windows)运行此脚本,指定网络上文件的路径,并得到以下结果:

571013088 571340768 <-这里的第二个数字“不正确”

如果他将文件从网络复制到本地磁盘,则结果符合预期:

571013088 571013088

我在linux工作站上运行相同的脚本,结果始终是正确的。

(原始脚本稍微有用一点:它从显示进度条的网络共享中复制文件。结果是复制的文件已损坏。)

相同的问题发生在许多不同的文件上(可能是所有非常大的文件)。

有什么想法可以调查正在发生的事情吗?

0 个答案:

没有答案
相关问题