bir oyun yapıyordum ve oyunuma best skor yapmam gerekiyordu ancak oyun içi skoru alıp dosya ile karşılaştırırken dosyanın içeriğini boşaltıp kontrol ediyor ve bu yüzden sorun yaşıyorum bende bu sorunu daha rahat test edebilemek için sıfırdan bir kod yazıp input la denemek istedim bunu ve gene aynı şeyi yaşadım input la denediğim yöntemin kodu burda:
f = open("best.txt","w+")
if str(f.read()) == "":
x = input("sayı: ")
print("dosya boş")
f.write(x)
else:
x = input()
if int(x) > int(f.read()):
f.write(x)
print("yaptım")
else:
print("büyük değil")
Traceback (most recent call last):
File “C:\Users\alper\PycharmProjects\Project2\Dersler\deneme.py”, line 9, in
if int(x) > int(f.read()):
ValueError: invalid literal for int() with base 10: ‘’
yanlış anlamadıysam bir şeyi boş olarak alıyor ancak ne f.read() boş ne de x = input()
boş sebebi nedir hocam bu hatanın
Dosyayı birden fazla kez okuyunca, boş bir stringreturn ediyor.
Bunun için f.read() değerini bir değişkene atayıp, o değişkeni kullanmalısınız.
Ya da bir kez okuduktan sonra f.seek(0) ile dosyanın başına dönmelisiniz.
f = open("best.txt","r+")
print(f.read())
f.seek(0)
print(f.read())
teşekkürler böyle yapınca kısmen çalışmaya başladı ancak bu sefer de r+ yaptığımız için dosyanın üzerine yazmak yerine ekleme yapıyor ancak benim üstüne yazmam gerekiyor bunu nasıl yapıcağım ? Yeni bir metod açıp örneğin w ile felan tekrar yaparsam çalışıcak mıdır hocam?
Dosya açmak için w yerine a kullanabilirsiniz. Bu durumda dosya varsa dosyaya ekleyebilirsiniz. Yani dosya mevcutsa eklemek üzere açar, yoksa oluşturur.