Val*_*g21 10 python python-2.6
我有两段代码,它们都是为了做同样的事情 - 坐在一个循环中,直到写完文件.它们主要用于通过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]
Run Code Online (Sandbox Code Playgroud)
另一个版本用于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
Run Code Online (Sandbox Code Playgroud)
我已经看到多个实例,其中使用第一种方法报告,当文件实际上仍在增长时,大小相同.是否有一些潜在的原因导致os.stat()错误报告而os.path.getsize()不会?我没有看到任何错误或异常.
NPE*_*NPE 19
在CPython 2.6和2.7中,os.path.getsize()实现如下:
def getsize(filename):
"""Return the size of a file, reported by os.stat()."""
return os.stat(filename).st_size
Run Code Online (Sandbox Code Playgroud)
由此可以清楚地看出,没有理由期望这两种方法的行为不同(除非您的代码中的循环结构不同).