Estoy viendo cómo hacer entrada y salida de archivos en Python. He escrito el siguiente código para leer una lista de nombres (uno por línea) de un archivo a otro archivo mientras comparo un nombre con los nombres en el archivo y agrego texto a las ocurrencias en el archivo. El código funciona ¿Podría hacerse mejor?Cómo abrir un archivo usando la declaración abierta con
Quería utilizar la declaración with open(...
para los archivos de entrada y salida, pero no puedo ver cómo podrían estar en el mismo bloque, lo que significa que necesitaría almacenar los nombres en una ubicación temporal.
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')
"lo que significa que necesitaría almacenar los nombres en una ubicación temporal"? ¿Puedes explicar a qué te refieres con esto? –
Tenga en cuenta que 'filter()' es [una función incorporada] (https://docs.python.org/2/library/functions.html#filter) por lo que probablemente debería elegir un nombre diferente para su función. – Tom
@Tom hace que una función en el espacio de nombres anule la función incorporada? – UpTide