Python os.stat(file_name).st_size与os.path.getsize(file_name)

时间:2013-09-23 14:39:42

标签: 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]

另一个版本使用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()会导致错误报告的原因吗?我没有看到任何错误或例外。

1 个答案:

答案 0 :(得分:17)

在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

由此可以清楚地看出,没有理由期望这两种方法的行为不同(除非您的代码中的循环结构不同)。