Speichern von ganze schleife ins Datei

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Bonio03
User
Beiträge: 2
Registriert: Sonntag 30. April 2017, 19:13

Hallo, ich habe folgende Code:

Code: Alles auswählen

file=open('./log.txt', 'w+')
while True:
    tut was
    if XXXX :
        tut was
			if YYYY :
					print ' abc ' + kA + ' def ' + kA2            #Ausgabe kommt zB. 50 mal
					file.write(' abc ' + kA + ' def ' + kA2 + ' \n ')

Ich möchte alle Ausgaben ins Datei rein, aber es speichert nur eine.
Vielen dank für Ihre Hilfe.
Zuletzt geändert von Anonymous am Sonntag 30. April 2017, 22:04, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Bonio03: das kann nicht sein, da Du für jedes print auch ein write ausführst. Wie sieht Dein wirklicher Code aus?
Bonio03
User
Beiträge: 2
Registriert: Sonntag 30. April 2017, 19:13

Code: Alles auswählen

#Detei oeffnen und rein schreiben
file=open('./log.txt', 'w+')

# receive a packet
while True:
    packet = s.recvfrom(65565)
     
    #packet string from tuple
    packet = packet[0]
     
    #parse ethernet header
    eth_length = 14
     
    eth_header = packet[:eth_length]
    eth = unpack('!6s6sH' , eth_header)
    eth_protocol = socket.ntohs(eth[2])

    #Parse IP packets, IP Protocol number = 8
    if eth_protocol == 8 :
        #Parse IP header
        #take first 20 characters for the ip header
        ip_header = packet[eth_length:20+eth_length]
         
        #now unpack them :)
        iph = unpack('!BBHHHBBH4s4s' , ip_header)
 
        version_ihl = iph[0]
        version = version_ihl >> 4
        ihl = version_ihl & 0xF
 
        iph_length = ihl * 4
 
        ttl = iph[5]
        protocol = iph[6]
        s_addr = socket.inet_ntoa(iph[8]);
        d_addr = socket.inet_ntoa(iph[9]);
    NurOutgoing = re.search(ip, s_addr)
    if NurOutgoing is not None:
        print ' Source Address : ' + str(s_addr) + ' Destination Address : ' + str(d_addr)

        #Was schreiben wir ins Detei
        file.write('Source Address : ' + str(s_addr) + ' Destination Address : ' + str(d_addr) + '\n')
Zuletzt geändert von Anonymous am Sonntag 30. April 2017, 22:06, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@Bonio03: Der Dateimodus 'w+' macht hier keinen Sinn und ist sogar falsch würde ich mal behaupten.

Ansonsten gilt für diesen Code immer noch was Sirius3 geschrieben hat.
Antworten