Operazioni con i file in Python

In questa lezione studieremo come effettuare delle operazioni con i file in Python.

Infatti, in Python, come negli altri linguaggi di programmazione, si dispone di funzioni per le operazioni di Input/Output sui file, non dissimili da quelle per l’I/O su console.

Ricordiamo che con il termine di file intendiamo tutto ciò che può essere registrato su un supporto di memoria di massa (disco rigido, pen drive, ecc.).

Il file è identificato da un nome e dall’estensione. Il nome solitamente è significativo, in modo da far intendere il contenuto che il file contiene, mentre l’estensione identifica il programma con il quale deve essere eseguito.

Le operazioni che si fanno sui file sono quelle di:

  • apertura – il file, salvato nella memoria di massa, viene caricato in memoria centrale solitamente per le operazioni di lettura o scrittura.
  • chiusura – il file caricato nella memoria centrale viene chiuso, ovvero viene interrotto il collegamento tra memoria centrale e memoria di massa che contiene quel file.
  • lettura – dopo l’operazione di apertura si può effetturare la lettura, ovvero si interpreta il contenuto del file caricandolo nella memoria centrale.
  • scrittura – dopo l’operazione di apertura si possono effettuare le operazioni di scrittura sul file, ovvero si salvano le modifiche nella memoria centrale.

La lettura si indica con INPUT (dalla memoria di massa a quella centrale) mentre la scrittura si indica con OUTPUT (dalla memoria centrale a quella di massa). Le operazioni che servono a trasferire informazioni dalla memoria centrale a quella di massa sono definite operazioni di Input/Output.

Operazioni con i file in Python – tipi di file

I file trattati dal file system si possono dividere in file di testo o file binari.

Ma qual è la differenza e perchè dobbiamo conoscerla?

Questi file codificano i dati in maniera diversa:

  • I file di testo detti anche file ASCII contengono caratteri di fine riga (EOL) e ciascun byte rappresenta un carattere della codifica ASCII. Sono adatti a memorizzare dati di lunghezza diversa, sono più pesanti ma possono essere letti su computer che hanno sistemi operativi diversi.
  • I file binari invece sono considerati come un flusso continuo di bit, sono più veloci nelle operazioni di lettura e scrittura e occupano meno spazio sul disco.

In Python utilizziamo i file di testo per gestire informazioni di tipo testuale mentre i file binari per gestire ad esempio immagini o suoni. Teniamo presente queste informazioni per le operazioni sui file in Python che vedremo nelle prossime lezioni.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

Continua la lettura su: https://www.codingcreativo.it/operazioni-con-i-file-in-python/ Autore del post: Coding Creativo Fonte: https://www.codingcreativo.it

Articoli Correlati

Ordinare un dizionario in Python

Si può ordinare un dizionario in Python per chiave o per valore. Facciamo alcuni esempi pratici di ordinamento in Python in base alle nostre esigenze.

Tutti gli esempi proposti possono essere provati nel compiler online che troverete al seguente link: Python compiler online.

Primo esempio – Ordinare un dizionario in Python per chiave

In questo primo esempio dapprima creiamo un dizionario in Python. Abbiamo poi detto di ordinare per chiave, quindi dobbiamo decidere se seguire un ordine crescente o decrescente, infine dobbiamo richiamare la funzione sul dizionario.

Implementiamo, dunque, una prima soluzione. Per ordinare in senso crescente possiamo utilizzare la funzione sorted sul nostro dizionario, in questo modo:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

for key in sorted(student):
print(key, student[key])

E se vogliamo un ordinamento decrescente? Basterà semplicemente utilizzare il parametro reverse della funzione sorted, impostandolo a False.

Ecco un esempio di dizionario ordinato in senso decrescente in Python:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

for key in sorted(student, reverse = True):
print(key, student[key])

Secondo esempio – Ordinare un dizionario in Python per chiave

Cerchiamo adesso una seconda soluzione al problema proposto.

Innanzitutto potremmo ad esempio pensare di utilizzare il metodo keys() sul dizionario, ma cosa succede?

Proviamolo, dunque, con un esempio:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

sorted_key = sorted(student.keys())

for element in sorted_key:
print(element)

In questo caso si avrà il seguente output:

age
hobby
mail
name
passion

Ovvero avremo le sole chiavi ordinate in senso crescente.

Quindi, anche se uso il metodo dict() non riuscirò in questo modo ad ordinare un dizionario in Python.

E se invece proviamo ad utilizzare il metodo values()?

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

sorted_values = sorted(student.values())

for element in sorted_values:
print(element)

Il risultato sarà il seguente:

29
Cristina
coding
codingcreatico@gmail.com
swim

Quindi se voglio ordinare un dizionario in Python per chiave cosa devo fare? Quale altra soluzione posso pensare?

Possiamo, ad esempio, utilizzare il metodo items(), che abbiamo studiato in questa lezione: items Python.

Ricordiamo inoltre che questo metodo è utilizzato per restituire l’elenco con tutte le chiavi del dizionario con i suoi rispettivi valori.

Dopo, possiamo nuovamente riconvertire le coppie di tuple in un dizionario utilizzando il metodo dict().

Ecco una possibile soluzione al nostro algoritmo:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

sorted_student = sorted(student.items())
sorted_student_dict = dict(sorted(student.items()))

print(sorted_student_dict)

for element in sorted_student_dict:
print(element, ‘: ‘, sorted_student_dict[element])

Così abbiamo ottenuto tutte le coppie di tuple chiave, valori ordinate in senso crescente. Poi, convertiamolo in dizionario con il metodo dict(). Così riusciamo ad ordinare il dizionario in Python per chiave.

Utilizziamo una funzione per poterla poi utilizzare per creare l’ordinamento su più dizionari:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

def sort_dict(d):
return dict(sorted(student.items()))

print(sort_dict(student))

Ordinare un dizionario in Python per chiave in senso decrescente

Questa volta utilizziamo il parametro reverse di sorted per creare un ordinamento decrescente sui dizionari. Infatti impostandolo a True l’ordinamento sarà decrescente. Di default il suo valore è False.

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

def sort_dict(d):
return dict(sorted(student.items(), reverse = True))

print(sort_dict(student))

Per completezza potremmo passare questo parametro anche alla funzione, in questo modo:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

def sort_dict(d, rev):
return dict(sorted(student.items(), reverse = rev))

print(sort_dict(student, True))

Conclusione

In questa lezione abbiamo affrontato alcuni interessanti esempi su come ordinare un dizionario in Python per chiave, in ordine crescente e decrescente.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili

11 – Modulo math

Aggiungere contenuto a un file in Python

In questa lezione studieremo come aggiungere contenuto a un file in Python già esistente, utilizzando la modalità append.

Aggiungere contenuto a un file in Python – primo esempio

In questo primo esempio utilizzeremo il nostro file rubrica.txt che già contiene dei dati ed aggiungere dei nuovi contatti.

Ipotizziamo ad esempio che il file contenga questi contatti:

Nome: cristina – Telefono: 3567Nome: luisa – Telefono: 34789

Implementiamo un algoritmo che consente di aggiungere un nuovo dato utilizzando il metodo write:

f = open(‘rubrica.txt’, ‘a’)
name = input(‘Inserisci un nuovo nome: ‘)
telephone = input(‘Inserisci il telefono: ‘)
f.write(‘Nome:’ + name + ‘ – Telefono:’ + telephone)
f.close()

Possiamo anche utilizzare la funzione print per scrivere nel file, dove specifichiamo il file su cui scrivere che abbiamo aperto in precedenza con open:

f = open(‘rubrica.txt’, ‘a’)
name = input(‘Inserisci un nuovo nome: ‘)
telephone = input(‘Inserisci il telefono: ‘)
print(‘Nome:’ + name + ‘ – Telefono:’ + telephone, file = f)
f.close()

Aggiungere contenuto a un file in Python – secondo esempio

In questo secondo esempio gestire più inserimenti grazie alle istruzioni cicliche.

Supponiamo ad esempio di voler chiedere all’utente quanti nomi si vuole aggiungere al file e di conseguenza gestire gli input in base alla risposta data.

Questa una possibile implementazione del semplice algoritmo nel quale utilizziamo il ciclo for:

f = open(‘rubrica.txt’, ‘a’)

n_dati = int(input(‘Quanti dati vuoi inserire?: ‘))

for i in range(n_dati):
name = input(‘Inserisci un nuovo nome: ‘)
telephone = input(‘Inserisci il telefono: ‘)
f.write(‘nNome:’ + name + ‘ – Telefono:’ + telephone)

f.close()

Aggiungere contenuto a un file in Python – terzo esempio

Se vogliamo aggiungere più elementi possiamo utilizzare anche un’istruzione iterativa e terminare ad esempio quando si clicca su un carattere a scelta.

Ipotizziamo di voler inserire dei dati e fermarci quando si sceglie di digitare il carattere *.

Ecco dunque una possibile implementazione nel quale utilizziamo il ciclo while:

f = open(‘rubrica.txt’, ‘a’)

print(‘Inserisci nuovi contatti nella rubrica, per terminare inserisci * nel nome’)

name = input(‘Inserisci un nuovo nome: ‘)

while name !=’*’:
telephone = input(‘Inserisci il telefono: ‘)
f.write(‘nNome:’ + name + ‘ – Telefono:’ + telephone)
name = input(‘Inserisci un nuovo nome: ‘)
f.close()

Colgo l’occasione per ricordare che il ciclo for si utilizza quando sappiamo esattamente quante volte sarà eseguito il ciclo, come nel secondo esempio dove verrà esseguito n_dati. Mentre il ciclo while si utilizza quando si vuole fermare il ciclo a seguito di una condizione.

In questa lezione abbiamo visto alcuni semplici esempi su come aggiungere contenuto ad un file in Python.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

Vuoi rimanere aggiornato sulle nuove tecnologie per la Didattica e ricevere suggerimenti per attività da fare in classe?

Sei un docente?

soloscuola.it la prima piattaforma
No Profit gestita dai

Volontari Per la Didattica
per il mondo della Scuola. 

 

Tutti i servizi sono gratuiti. 

Associazione di Volontariato Koinokalo Aps

Ente del Terzo Settore iscritta dal 2014
Tutte le attività sono finanziate con il 5X1000