Отображение содержимого файла

#python #python-3.9

#питон #python-3.9

Вопрос:

У меня возникли проблемы с отображением содержимого файла:

 def NRecieve_CnD():
    host = "localhost"
    port = 8080
    NServ = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    NServ.bind(("localhost",8080))
    NServ.listen(5)
    print("Ballot count is waiting for ballots")
    conn, addr = NServ.accept()
    File = "Ballot1.txt"
    f = open(File, 'w ')
    data = conn.recv(1024)
    print('Ballots recieved initializing information decoding procedures')
    while(data):
        data1 = data.decode('utf8','strict')
        f.write(data1)
        data = conn.recv(1024)
        print("Ballot saved, Now displaying vote... ")
        files = open("Ballot1.txt", "r")
        print(files.read())
    
 

при запуске программы область, в которой должно отображаться содержимое файла, остается пустой.

Комментарии:

1. Это линейная печать? "Ballot saved, Now displaying vote..."

Ответ №1:

Вы записываете в файл, затем снова открываете файл и, не удаляя свою первую запись ни явно, ни путем закрытия дескриптора файла, вы читаете файл. В результате вы читаете файл до того, как закончите его запись.

 f.write(data1)
f.flush() # Make sure the data is written to disk
data = conn.recv(1024)
print("Ballot saved, Now displaying vote... ")
files = open("Ballot1.txt", "r")
 

Кроме того, вероятно, будет лучше, если вы не будете держать файл открытым дольше, чем необходимо, чтобы избежать подобных сюрпризов:

 with open(File, 'w ') as f:
    f.write(data1)

data = conn.recv(1024)
print("Ballot saved, Now displaying vote... ")

with open(File, "r") as f:
    print(f.read())