Sto guardando come eseguire l'input e l'output di file in Python. Ho scritto il seguente codice per leggere un elenco di nomi (uno per riga) da un file in un altro file mentre si controlla un nome con i nomi nel file e aggiungendo il testo alle occorrenze nel file. Il codice funziona. Potrebbe essere fatto meglio?Come aprire un file usando l'istruzione open con
Avrei voluto utilizzare l'istruzione with open(...
per entrambi i file di input e di output, ma non posso vedere come potrebbero essere nello stesso blocco, il che significa che avrei bisogno di memorizzare i nomi in una posizione temporanea.
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')
"significato che avrei bisogno di memorizzare i nomi in una posizione temporanea"? Puoi spiegare cosa intendi con questo? –
Nota che 'filter()' è [una funzione built-in] (https://docs.python.org/2/library/functions.html#filter) e quindi probabilmente dovresti scegliere un nome diverso per la tua funzione. – Tom
@Tom fa una funzione nel namespace sovrascrive la funzione built-in? – UpTide