我有一个非常简单的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工作站上运行相同的脚本,结果始终是正确的。
(原始脚本稍微有用一点:它从显示进度条的网络共享中复制文件。结果是复制的文件已损坏。)
相同的问题发生在许多不同的文件上(可能是所有非常大的文件)。
有什么想法可以调查正在发生的事情吗?