Python Opslaan in bestand

Ik wil een string opslaan in een bestand met een python-programma met de naam Failed.py

Dit is wat ik tot nu toe heb:

myFile = open('today','r')
ips = {}
for line in myFile:
    parts = line.split(' ')
    if parts[1] == 'Failure':
        if parts[0] in ips:
            ips[pars[0]] += 1
        else:
            ips[parts[0]] = 0
for ip in [k for k, v in ips.iteritems() if v >=5]:
    #write to file called Failed.py

Antwoord 1, autoriteit 100%

file = open('Failed.py', 'w')
file.write('whatever')
file.close()

Hier is een meer pythonische versie, die het bestand automatisch sluit, zelfs als er een uitzondering was in het ingepakte blok:

with open('Failed.py', 'w') as file:
    file.write('whatever')

Antwoord 2, autoriteit 11%

Je moet het bestand opnieuw openen met open(), maar deze keer geef je 'w'door om aan te geven dat je naar het bestand wilt schrijven. Ik zou ook aanraden om withte gebruiken om ervoor te zorgen dat het bestand wordt gesloten als je klaar bent met schrijven.

with open('Failed.txt', 'w') as f:
    for ip in [k for k, v in ips.iteritems() if v >=5]:
        f.write(ip)

Natuurlijk wil je misschien nieuwe regels of andere opmaak in je uitvoer opnemen, maar de basis is zoals hierboven.

Hetzelfde probleem met het sluiten van uw bestand is van toepassing op de leescode. Dat zou er zo uit moeten zien:

ips = {}
with open('today','r') as myFile:
    for line in myFile:
        parts = line.split(' ')
        if parts[1] == 'Failure':
            if parts[0] in ips:
                ips[pars[0]] += 1
            else:
                ips[parts[0]] = 0

Antwoord 3

U kunt deze functie gebruiken:

def saveListToFile(listname, pathtosave):
    file1 = open(pathtosave,"w") 
    for i in listname:
        file1.writelines("{}\n".format(i))    
    file1.close() 
# to save:
saveListToFile(list, path)

Antwoord 4

myFile = open('today','r')
ips = {}
for line in myFile:
    parts = line.split()
    if parts[1] == 'Failure':
        ips.setdefault(parts[0], 0)
        ips[parts[0]] += 1
of = open('failed.py', 'w')
for ip in [k for k, v in ips.iteritems() if v >=5]:
    of.write(k+'\n')

Bekijk setdefault, dit maakt de code iets leesbaarder. Vervolgens dump je je gegevens met de schrijfmethode van het bestandsobject.


Antwoord 5

Om in Python naar een bestand te schrijven, moeten we het openen in de schrijf w, aof exclusieve aanmaakmodus xtoevoegen .

We moeten voorzichtig zijn met de modus w, omdat deze in het bestand wordt overschreven als het al bestaat. Hierdoor worden alle eerdere gegevens gewist.

Het schrijven van een string of reeks bytes (voor binaire bestanden) gebeurt met de methode write(). Deze methode retourneert het aantal tekens dat naar het bestand is geschreven.

with open('Failed.py','w',encoding = 'utf-8') as f:
   f.write("Write what you want to write in\n")
   f.write("this file\n\n")

Dit programma maakt een nieuw bestand met de naam Failed.pyin de huidige map als deze niet bestaat. Als het bestaat, wordt het overschreven.

We moeten de nieuwlijntekens zelf opnemen om de verschillende regels te onderscheiden.

Other episodes