Большой файл не был записан на диск сразу после вызова close ()?
я создаю большой файл с моим скриптом Python (более1GB
на самом делес 8 из них). Сразу после создания я должен создать процесс, который будет использовать эти файлы.
Сценарий выглядит так:
# This is more complex function, but it basically does this:
def use_file():
subprocess.call(['C:\\use_file', 'C:\\foo.txt']);
f = open( 'C:\\foo.txt', 'wb')
for i in 10000:
f.write( one_MB_chunk)
f.flush()
os.fsync( f.fileno())
f.close()
time.sleep(5) # With this line added it just works fine
t = threading.Thread( target=use_file)
t.start()
Но приложениеuse_file
действует какfoo.txt
пустой. Происходят странные вещи:
C:\use_file C:\foo.txt
в консоли (после завершения скрипта) я получаю правильные результатыесли я выполню вручнуюuse_file()
в другой консоли Python я получаю правильные результатыC:\foo.txt
виден на диске сразу послеopen()
назывался, но остается размер0B
до конца сценарияесли я добавлюtime.sleep(5)
это только начинает работать как ожидалось (или скорее требуется), я 'мы уже нашли:
os.fsync()
но это некажется, работает (результат отuse_file
как будтоC:\foo.txt
был пуст)С помощьюbuffering=(1