Dosya işlemleri yapılırken yapılan değişiklikler anbean yenilenmiyor

currentText = self.comboBox_3.currentText()
length = self.lineEdit.text()
with open(r"E:\Yeni klasör (4)\pythonProject5\ozel_projeler\Pro\PracticePython\passwordGen\difficulity.txt","w") as file1:
            file1.write(currentText)
        
with open(r"E:\Yeni klasör (4)\pythonProject5\ozel_projeler\Pro\PracticePython\passwordGen\length.txt","w") as file2:
            file2.write(length)
with open(r"E:\Yeni klasör (4)\pythonProject5\ozel_projeler\Pro\PracticePython\passwordGen\difficulity.txt","r") as file1:
            print(file1.read())
        
with open(r"E:\Yeni klasör (4)\pythonProject5\ozel_projeler\Pro\PracticePython\passwordGen\length.txt","r") as file2:
            print(file2.read())  

Merhabalar,
İlk attığım kodlarda .txt uzantılı dosyaya veri yazdırıyorum, ikinci attığım kodlarda da bunu okuyorum.
Ancak yazdırma konusunda bir sıkıntı var. Yazdırma işlemi yapılıyor yapılmasına ama yapılan yazdırma işlemi program kapandığında dosyaya kaydedilmiş oluyor.
İşte sorun da burada. Ben dosyayı okuduğum zaman program henüz kapanmış olmadığı için (dolayısıyla da değişiklikler kaydedilmediği için) dosya yenilenmemiş bir şekilde okunuyor. Yazdırma işleminin geçtiği kodların direkt çalışıp değişikliği kaydetmesi lazım ki dosya okuma işleminde güncel veriler okunsun. Fakat yazdırma işleminin yapacağı değişikliği anında kaydedebilmesini nasıl sağlarım bilmiyorum yardımcı olur musunuz ?

Merhaba,

write fonksiyonundan sonra flush fonksiyonunu çağırın bir daha deneyin.

    file1.write(currentText)
    file1.flush()

Şurayı,

Şu şekilde,

print(currentText, file=file1, flush=True)

Değiştirmeyi deneyin.

flush’u denedim ancak maalesef işe yaramadı. Flush parametresi belki de bende çalışmıyor olabilir bilmiyorum, normalde gerçekten işe yaramalıydı. Yanlış hatırlamıyorsam istihza’da flush parametresini denerken orada anlatılan ve gerçekleşmesi gereken durumlar gerçekleşmemişti. Python 3.8.5 kullanıyorum.

Bu iki farklı kod iki ayrı dosyada mı tutuluyor?

aynı dosyalarda

Text dosyalarını kastetmiyorum, iki kod aynı dosyada mı çalıştırılıyor diye soruyorum.

1 Beğeni

ben de size evet dedim

yani bu txtlerde aynı dosyada bu window vslerin classları da kendisi bize kodunu atmıştı dc sunucusunda @DrShahinstein bu kısım sizin işinize yarayabilir

Şu an Windows açık değil. Ubuntu’da aşağıdaki kodu çalıştırdığım zaman dosyaya yazılan yazı program tarafından okunuyor. Aşağıdaki kod Windows’da boş değer mi döndürüyor? Bir deneyebilir misiniz?

with open("test.txt", "w") as f:
    f.write("hello")
    
with open("test.txt") as f:
    print(f.read())

hayır hello çıktısını verdi bende ondaki guili belki de ondandır belki o kendi dosya yolunu girdi ondandır

O zaman arkadaşın koduyla alakalı daha fazla bilgi vermesi gerekiyor.

Dönüş yapamadım kusura bakmayın.
Kodların tam hali:

# Needed Libs
from PyQt5.QtWidgets import *
import sys
import random
import time
# Binding
import passwordGen__main__
import passwordGen__startMenu__

# Windows
class startWindow(QWidget, passwordGen__startMenu__.Ui_Form):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
      
        self.continueBtn.clicked.connect(self.transition)
        
    def transition(self):
        self.w = mainWindow()
        self.w.show()
        self.w.setWindowTitle("Password Generator")
        self.close()
        currentText = self.comboBox_3.currentText()
        length = self.lineEdit.text()
        with open(r"\difficulity.txt","w") as file1:
            print(currentText, file=file1, flush=True)
        
        with open(r"\length.txt","w") as file2:
            print(length, file=file2, flush=True)
          
        
        
 

class mainWindow(QWidget, passwordGen__main__.Ui_Form):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        with open(r"E:\Yeni klasör (4)\pythonProject5\ozel_projeler\Pro\PracticePython\passwordGen\difficulity.txt","r") as file1:
            print(file1.read())
        
        with open(r"E:\Yeni klasör (4)\pythonProject5\ozel_projeler\Pro\PracticePython\passwordGen\length.txt","r") as file2:
            print(file2.read())  
    
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    startW = startWindow()
    startW.setWindowTitle("Password Generator")
    startW.show()
    sys.exit(app.exec_())
    
    
    
#characters = [
    #["!", "'", "^", "+", "%", "&", "/", "(", ")", "=", "?", "_", "-", "<", ">", ".", ",", "*", "1", "2", "3", "4", "5", "6", "7", "8"," 9", "0","a","A","q","Q","h","H","p","P","w","W","z","Z","c","C","v","V","u","U","t","T"]
#]

#count = 0
#while count <= 50:          
    #x = random.choice(characters[0])
    #count += 1
    #print(x, end="")

Taylan abim direkt dosya adını yaz yol verme

1 Beğeni

Bu aşağıdakiler nedir, nasıl temin edilir?

import passwordGen__main__
import passwordGen__startMenu__

knk guilerinin py hali abi

Bu yukarıdaki py dosyaları olmadan kodu nasıl çalıştıracağım?

atayım ben
passwordGen__startMenu__.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'passwordGen(startMenu).ui'
#
# Created by: PyQt5 UI code generator 5.9.2
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(666, 503)
        self.darkFrame = QtWidgets.QFrame(Form)
        self.darkFrame.setGeometry(QtCore.QRect(0, 0, 671, 521))
        self.darkFrame.setStyleSheet("background-color: #383838;")
        self.darkFrame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.darkFrame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.darkFrame.setObjectName("darkFrame")
        self.lbl_1 = QtWidgets.QLabel(self.darkFrame)
        self.lbl_1.setGeometry(QtCore.QRect(0, 30, 661, 51))
        font = QtGui.QFont()
        font.setPointSize(-1)
        self.lbl_1.setFont(font)
        self.lbl_1.setStyleSheet("color: white;\n"
"font-size: 30px;")
        self.lbl_1.setObjectName("lbl_1")
        self.infoLbl = QtWidgets.QLabel(self.darkFrame)
        self.infoLbl.setGeometry(QtCore.QRect(0, 80, 661, 51))
        font = QtGui.QFont()
        font.setFamily("Yu Gothic UI Semibold")
        font.setPointSize(-1)
        self.infoLbl.setFont(font)
        self.infoLbl.setStyleSheet("color : pink;\n"
"font-size: 20px;")
        self.infoLbl.setObjectName("infoLbl")
        self.lineEdit = QtWidgets.QLineEdit(self.darkFrame)
        self.lineEdit.setGeometry(QtCore.QRect(490, 200, 101, 41))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.lineEdit.setFont(font)
        self.lineEdit.setStyleSheet("background-color: white;\n"
"border-radius: 1px;\n"
"color: purple;\n"
"")
        self.lineEdit.setObjectName("lineEdit")
        self.label_3 = QtWidgets.QLabel(self.darkFrame)
        self.label_3.setGeometry(QtCore.QRect(490, 180, 121, 16))
        self.label_3.setStyleSheet("color: white;\n"
"")
        self.label_3.setObjectName("label_3")
        self.commandLinkButton = QtWidgets.QCommandLinkButton(self.darkFrame)
        self.commandLinkButton.setGeometry(QtCore.QRect(500, 450, 151, 41))
        font = QtGui.QFont()
        font.setFamily("Segoe UI")
        font.setBold(True)
        font.setWeight(75)
        self.commandLinkButton.setFont(font)
        self.commandLinkButton.setStyleSheet("color: white;\n"
"")
        self.commandLinkButton.setObjectName("commandLinkButton")
        self.continueBtn = QtWidgets.QPushButton(self.darkFrame)
        self.continueBtn.setGeometry(QtCore.QRect(240, 330, 191, 51))
        font = QtGui.QFont()
        font.setPointSize(-1)
        self.continueBtn.setFont(font)
        self.continueBtn.setStyleSheet("background-color: rgb(75, 255, 81);\n"
"color: red;\n"
"font-size: 20px;\n"
"border-radius: 10px;")
        self.continueBtn.setObjectName("continueBtn")
        self.comboBox_3 = QtWidgets.QComboBox(self.darkFrame)
        self.comboBox_3.setGeometry(QtCore.QRect(70, 200, 101, 41))
        self.comboBox_3.setStyleSheet("background-color: white;")
        self.comboBox_3.setObjectName("comboBox_3")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox = QtWidgets.QComboBox(Form)
        self.comboBox.setGeometry(QtCore.QRect(730, 140, 101, 41))
        self.comboBox.setStyleSheet("background-color: white;")
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.lbl_1.setText(_translate("Form", "<center>Welcome to Password Generator !</center>"))
        self.infoLbl.setText(_translate("Form", "<center>Choose Your Password Difficulity and Length</center>"))
        self.label_3.setText(_translate("Form", "Password Length : (int)"))
        self.commandLinkButton.setText(_translate("Form", "Join Our Discord !"))
        self.continueBtn.setText(_translate("Form", "Continue ->"))
        self.comboBox_3.setItemText(0, _translate("Form", "Difficulity"))
        self.comboBox_3.setItemText(1, _translate("Form", "Easy"))
        self.comboBox_3.setItemText(2, _translate("Form", "Medium"))
        self.comboBox_3.setItemText(3, _translate("Form", "Hard"))
        self.comboBox.setItemText(0, _translate("Form", "Difficulity"))
        self.comboBox.setItemText(1, _translate("Form", "Easy"))
        self.comboBox.setItemText(2, _translate("Form", "Medium"))
        self.comboBox.setItemText(3, _translate("Form", "Hard"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

passwordGen__main__.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'passwordGen(main).ui'
#
# Created by: PyQt5 UI code generator 5.9.2
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.darkFrame = QtWidgets.QFrame(Form)
        self.darkFrame.setGeometry(QtCore.QRect(0, 0, 401, 301))
        self.darkFrame.setStyleSheet("background-color: #303030;")
        self.darkFrame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.darkFrame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.darkFrame.setObjectName("darkFrame")
        self.GenBtn = QtWidgets.QPushButton(self.darkFrame)
        self.GenBtn.setGeometry(QtCore.QRect(10, 40, 381, 51))
        self.GenBtn.setStyleSheet("color: white;\n"
"font-size: 20px;\n"
"border: 5px solid yellow;\n"
"border-radius: 20px;")
        self.GenBtn.setObjectName("GenBtn")
        self.passwordArea = QtWidgets.QPlainTextEdit(self.darkFrame)
        self.passwordArea.setGeometry(QtCore.QRect(0, 160, 401, 61))
        self.passwordArea.setStyleSheet("color: white;\n"
"padding-left: 20px;")
        self.passwordArea.setPlainText("")
        self.passwordArea.setObjectName("passwordArea")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.GenBtn.setText(_translate("Form", "Click me to Generate the Password !"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

Yukarıdaki fonksiyonun ilk satırında, mainWindow sınıfından bir örnek oluşturuluyor. Ve oluşturulur oluşturulmaz da difficulty.txt ve length.txt dosyalarının içerikleri ekrana yazdırılmaya çalışılıyor. Bende bu dosyalar mevcut değildi. Kodu çalıştırdığım zaman FileNotFoundError hatası aldım.

Sonra fonksiyonu şu şekilde değiştirdim ve sorun çözüldü.

    def transition(self):
        currentText = self.comboBox_3.currentText()
        length = self.lineEdit.text()
        with open("difficulty.txt","w") as file1:
            print(currentText, file=file1, flush=True)
        
        with open("length.txt","w") as file2:
            print(length, file=file2, flush=True)
        self.w = mainWindow()
        self.w.show()
        self.w.setWindowTitle("Password Generator")
        self.close()
1 Beğeni

anlık veriyi kontrol ediyor mu