Yazbel’in python derslerine basladim. Lakin print() fonksyonunun paremetrelerinden biri olan, “flush” paremetresi calismiyor. O yokken kodumun sonunda dosyasi kapatmazsam dosyaya bir sey yazdiramiyor olmam gerek. Lakin ben yazdirabiliyorum. Aceba bu yeni python surumlerinde artik default olarak flush=True mu geliyor?
kod:
test = open("test.txt", "w")
print("Hello flush", file=test)
bu satir da islendikten sonra programin sonlaniyor ve metin belgesine ilgili icerik yazdiriliyor. Eger son satira bir input() koyarsan, sen girdiyi programa verene kadar print’in ciktisinin dosyana henuz yazilmamis oldugunu goreceksin.
https://python-istihza.yazbel.com/YazbelPythonProgramlamaDiliBelgeleri.pdf bu kitabin 83. sayfasinda, flush degeri false olursa, ben dosyayi kapat demedigim surece kapanmayacagini ve dosyaya bir ciktinin yazilamayacagini soyluyor. Kafam karismisti orada Ama python’un artik isi bittigi icin orada dosyayi kapatmaktan baska caresi kalmiyor. Sonucta calismiyorken bir islem yapamaz. O an bunu dusunemisim. Cok tesekkur ederim cevabiniz icin. Dediginiz gibi yaptigimda True False ile kontrol saglayabiliyorum.
flush gibi bir detaya neden girmis bilmiyorum ama nasil calistigini bilmek icin isletim sistemlerinin detaylarini incelemek gerekiyor. Mesela yanlis hatirlamiyorsam C stdout/stderr’in \n yaziminda flush edildigini garanti ediyordu. O zaman buyuk ihtimalle POSIX de. Redirect edince (>) ne oluyor bilmiyorum. Windows’un ne yaptigi bambaska bir arastirma konusu.