2013-09-23 16 views
8

Her ikisi de aynı şeyi yapmak için kullanılan iki kod kodum var - bir dosya bitene kadar bir döngüde oturun için yazılmıştır. Her ikisi de esas olarak FTP/SCP ile gelen dosyalar için kullanılır.Python os.stat (file_name) .st_size versus os.path.getsize (dosya_adı)

kod biri sürümü os.stat()[stat.ST_SIZE]

kullanarak gelmez : İlk yöntem kullanılarak boyutlarda olduğunu bildirmektedir nerede birden çok örneğini gördüm

size1,size2 = 0,0 
while True: 
    size2 = os.path.getsize(file_name) 
    if size1 == size2: 
    break 
    else: 
    time.sleep(300) 
    size1 = size2 

:

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] 

Başka bir sürümü os.path.getsize() ile yapar dosya aslında büyürken aynıdır. os.path.getsize(), os.path.getsize()'un neden yanlış rapor edeceğinin altta yatan bir nedeni var mı? Herhangi bir hata görmüyorum ya da istisnalar geri dönüyor.

şöyle CPython 2.6 ve 2.7'de ise

cevap

15

, os.path.getsize() uygulanmaktadır: Bundan

def getsize(filename): 
    """Return the size of a file, reported by os.stat().""" 
    return os.stat(filename).st_size 

, bunun nedeni farklı iki yaklaşım belki haricinde (farklı davranmaya beklemek için bir neden olmadığını oldukça net görünüyor kodunuzdaki döngülerin yapıları).

+0

hmm, o zaman çok garip. Kodun geri kalanına daha derin bir bakış atmak zorundayım, ama bu bilmek güzel. Teşekkürler! – Valdogg21