我有两段代码,这两段代码都是用来做同样的事情的——在一个循环中,直到一个文件被写入。它们都主要用于通过FTP/SCP传入的文件。
其中一个版本的代码使用os.stat()[stat.ST_SIZE]
:
size1,size2 = 1,0
while size1 != size2:
size1 = os.stat(file_name)[stat.ST_SIZE]
time.sleep(300)
size2 = os.stat(file_name)[stat.ST_SIZE]
另一个版本使用os.path.getsize()
:
size1,size2 = 0,0
while True:
size2 = os.path.getsize(file_name)
if size1 == size2:
break
else:
time.sleep(300)
size1 = size2
我已经看到多个实例,其中使用第一个方法报告文件实际仍在增长时大小相同。为什么os.stat()
会不正确地报告,而os.path.getsize()
不会正确地报告,有什么潜在的原因吗?我没有看到任何错误或异常回来。
在CPython 2.6和2.7中,
os.path.getsize()
实现如下:由此看来,很明显没有理由期望这两种方法的行为有所不同(可能是由于代码中循环的结构不同)。
相关问题 更多 >
编程相关推荐