#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())