Ich schaue mir an, wie man Dateien in Python ein- und ausgibt. Ich habe den folgenden Code geschrieben, um eine Liste von Namen (einen pro Zeile) aus einer Datei in eine andere Datei zu lesen, während ein Name mit den Namen in der Datei verglichen und Text an die Vorkommen in der Datei angehängt wird. Der Code funktioniert. Könnte es besser gemacht werden?
Ich wollte die with open(...
Anweisung sowohl für Eingabe- als auch für Ausgabedateien verwenden, kann aber nicht sehen, wie sie sich im selben Block befinden könnten, was bedeutet, dass ich die Namen an einem temporären Speicherort speichern müsste.
def filter(txt, oldfile, newfile):
'''\
Read a list of names from a file line by line into an output file.
If a line begins with a particular name, insert a string of text
after the name before appending the line to the output file.
'''
outfile = open(newfile, 'w')
with open(oldfile, 'r', encoding='utf-8') as infile:
for line in infile:
if line.startswith(txt):
line = line[0:len(txt)] + ' - Truly a great person!\n'
outfile.write(line)
outfile.close()
return # Do I gain anything by including this?
# input the name you want to check against
text = input('Please enter the name of a great person: ')
letsgo = filter(text,'Spanish', 'Spanish2')
filter()
ist eine integrierte Funktion und so werden Sie wahrscheinlich einen anderen Namen für Ihre Funktion wählen sollten.
filter()
) erstellen, wird diese vor der integrierten Funktion gefundenfilter()