Python os.stat(file_name).st_size与os.path.getsize(file_name)的比较

2024-05-15 12:00:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两段代码,这两段代码都是用来做同样的事情的——在一个循环中,直到一个文件被写入。它们都主要用于通过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()不会正确地报告,有什么潜在的原因吗?我没有看到任何错误或异常回来。


Tags: 文件path代码name版本sizeos报告
1条回答
网友
1楼 · 发布于 2024-05-15 12:00:10

在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

由此看来,很明显没有理由期望这两种方法的行为有所不同(可能是由于代码中循环的结构不同)。

相关问题 更多 >