Seite 1 von 1

Speichern von ganze schleife ins Datei

Verfasst: Sonntag 30. April 2017, 19:17
von Bonio03
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.

Re: Speichern von ganze schleife ins Datei

Verfasst: Sonntag 30. April 2017, 20:04
von Sirius3
@Bonio03: das kann nicht sein, da Du für jedes print auch ein write ausführst. Wie sieht Dein wirklicher Code aus?

Re: Speichern von ganze schleife ins Datei

Verfasst: Sonntag 30. April 2017, 20:11
von Bonio03

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')

Re: Speichern von ganze schleife ins Datei

Verfasst: Sonntag 30. April 2017, 22:09
von 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.