Print flush metodu

Arkadaşlar pythonda flush metodunu kullanıyorum dosyayı kaydediyor fakat terminale bastırmıyor çıktıları . Nasıl düzeltebilirim ?

Kodlanızı görebilir miyiz? Yada daha detaylı bilgi verin print fonksiyonunun file parametresiylemi yazdırıyosunuz dosyaya yada write fonksiyomu kullandınız. stdoutu cıktısını mı değiştirdiniz… gibi

1 Like

Merhaba Emin Bey. flush bir metod değildir, print fonksiyonunun bir parametresidir. Kavramları doğru kullanırsak birbirimizi daha iyi anlarız. Sorunuz çok açıklayıcı değil, sorunuza kodunuzu ekleyip yapmak istediğiniz şeyi ve aldığınız sonucu daha iyi açıklarsanız yardım edebiliriz.

1 Like

Merhaba Ekrem Bey, zaten biliyorsunuzdur ama flush'ın aynı zamanda bir metod olduğunu da hatırlatayım dedim.

>>> type(open("a").flush)
<class 'builtin_function_or_method'>

>>> type(__import__("sys").stdout.flush)
<class 'builtin_function_or_method'>

Elbette ancak başlıkta “Print flush metodu” yazıyor :smiley: Bunu okuyunca “Print flush parametresi” denmek istenmiş olabileceğini düşündüm.

Arkadaş çıktıyı dosyaya yazmakla alakalı bir şeyler yazmış. Belki de çıktıyı dosyaya yazdırmaya çalışıyordur ve çıktı neden ekrana da yazılmıyor diye bir soru soruyordur. Sizin de dediğiniz gibi yapmaya çalıştığı şeyi açıkça ifade etmemiş.

2 Likes

Haklısınız. Soru tam açıklanmadığında herkes farklı bir yorumda bulunabiliyor. Tekrar okuyunca sizin dediğinizin daha olası olduğunu anladım.

1 Like

Doğru mu bilmiyorum ama dediğiniz gibi soru pek anlaşılır değil. Sadece tahmin yürütüyorum.

teşekkürler . Flush metod değil parametreymiş demek ki .

Eğer print fonksiyonunun içine yazdığınızı kastediyorsanız öyle. Sorunuzu biraz daha açarsanız yardımcı olmaya da çalışırız.

import itertools
import os
import sys

hane = int(input("Minimum hane sayısını giriniz : "))
mn = int(input("Maksimum hane sayısını giriniz : "))

çıktıklasörü = open(“cıtkı.txt”, “w”)

sayılar = “0123456789”
harfler = “abcdefghijklmnoprstuxyz”
sonmax = abs(mn)
sonhane = abs(hane)

karakterler = “0123456789abcdefghijklmnoprstuxyzABCDEFGHIJKLMNOPRSTUXYZ”

def şifreoluşturmav1(sonhane):
for i in range(sonhane, sonmax + 1):
for j in itertools.product(karakterler, repeat=i):
zaa = print("".join(j),file=çıktıklasörü)

if mn < hane:
sonmax = abs(hane)
sonhane = abs(mn)
şifreoluşturmav1(sonhane)

if mn == hane:
sonmax = sonhane
şifreoluşturmav1(sonhane)

if hane < mn:
şifreoluşturmav1(sonhane)

input("")
çıktıklasörü.close()

Bu kodda , flush parametresiyle çıtkı dosyasına veri ekliyorum . Fakat bu verileri terminale bastırmıyor .

Kabaca düzelttim

import itertools
import os
import sys

hane = int(input("Minimum hane sayısını giriniz : "))
mn = int(input("Maksimum hane sayısını giriniz : "))

çıktıklasörü = open("C:\\Users\\USER\\Desktop\\cıtkı.txt", "w")#yolu kendine göre secersin

sayılar = "0123456789"
harfler = "abcdefghijklmnoprstuxyz"
sonmax = abs(mn)
sonhane = abs(hane)

karakterler = "0123456789abcdefghijklmnoprstuxyzABCDEFGHIJKLMNOPRSTUXYZ"

def şifreoluşturmav1(sonhane):
    for i in range(sonhane, sonmax + 1):
        for j in itertools.product(karakterler, repeat=i):
            zaa = print("".join(j),file=çıktıklasörü, flush=True)#burada flush parametresini kullandık ve tamponda veri bekletilmeden dosyaya yazdırılacak
            print("".join(j))#burada terminale cıktı veriyoruz, yukardaki ise dosyaya cıktı veriyor

if mn < hane:
    sonmax = abs(hane)
    sonhane = abs(mn)
    şifreoluşturmav1(sonhane)

if mn == hane:
    sonmax = sonhane
    şifreoluşturmav1(sonhane)

if hane < mn:
    şifreoluşturmav1(sonhane)

input("")#inputu neden kullandığını çözemedim
çıktıklasörü.close()

Ayrıca if bloklarını ne için kullandınız merak ediyorum

kullanıcı minimum haneye maksimumdan daha büyük , ya da eşit bir hane girerse diye

Ben bu kodda flush diye bir şey göremedim?

Ben yanlış söylemişim o zaman

Keşke en baştan başlığınızı ve sorunuzu doğru yazsaydınız. Ayrıca kod görünümü hakkında şuraya bakın lütfen Gönderilerdeki kod görünümü hakkında.
Kodlarınızı normal mesaj gibi ve girintilemelere dikkat etmeden atarak okunmasını zorlaştırıyorsunuz.

En başta yapsan daha sağlıklı olur. Fikir vermesi acısından, en başı şu şekilde düzenledim


hane = int(input("Minimum hane sayısını giriniz : "))
mn = int(input("Maksimum hane sayısını giriniz : "))

def kullanıcı_girisi(min:int=0, max:int=0):
	if min <= max:
		print("devam ediliyor..")
		return [min, max]
	
	elif min > max:
		print("Minimum hane max haneden büyük, cıkış yapılıyor")
		sys.exit()

Ve en assağıdaki if bloklarınıda silip yerine sadece

şifreoluşturmav1(sonhane)

ekledim. üst üste if blokları sandığınız gibi çalışmayabilir. Yani iki if bloguda isletilebilir…

yok çıkış yapmaya gerek yok . if blokları çalışıyor bu arada teşekkürler