ファイルがまだ転送されているかどうかを確認するために stat を使用していますが、機能していません。ネットワークを介して大きなファイルをコピーすると (数百ギガバイト、数分かかる場合があります)、スクリプトを実行します。
from os import stat
from time import sleep
While True:
stat("thefile.foo")
sleep(2)
時間またはサイズのいずれかが変化することを期待していますが、同じままです。ファイルがまだ転送中であるかどうかを確認するために使用できるものは他にありますか? 残念ながら、これはWindowsサーバー上にあります。
実際にファイルを読み取るために、このスクリプトを試しました:
import sys
finished=False
oldgb=0
while not finished:
f=open(thefile,"rb")
samp=f.read(1)
gb=0
while samp!= b'':
sys.stdout.flush()
gb+=1000000000
f.seek(gb)
samp=f.read(1)
print(gb/1000000000,samp)
f.close()
print(oldgb, gb)
if gb>oldgb:
oldgb=gb
else:
finished=True
ファイルのコピー中に、まだコピーされていないバイトがゼロに初期化されたため、ファイルサイズが更新されていないことに気付きました。代わりにチェックサムを使用して、ファイルが変更されたかどうかを確認する場合があります。