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
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.
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 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ş.
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.
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