Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Come trattare i file nell'Hw4-rec

X
XnXs (480 points)
6 23 25
in HW4 by (480 points)
Ciao a tutti, ho da poco iniziato l'hw 4 di recupero e mi sorti alcuni dubbi riguardo a come posso leggere i file json. La mia idea è quella di usare il metodo "with open(filename, mode...)" dove filename corrisponderebbe a una stringa concatenata a dbsize, quindi una cosa del genere:

filename = dbsize + '_students' e per aprire i file riguardanti uscirebbe: with open(filename, mode...)?

Guardando il file mi sono venuti altri dubbi, ci sono diversi file della stessa tipologia, nel senso posso trovare il file students.js ma anche studenti.js, stessa cosa per corsi, insegnanti e esami. Li dovrei usare tutti (creando quindi 2 filename per le diverse versioni o devo usare solo quelli in italiano o inglese?). Un altra domanda è riguardo i file: cognomi, corsi, docenti e esami che sono privi di dbsize, a cosa servono?

Per ultimo rimane il fileout, lo devo creare io o lo trovo da qualche parte nella directory (anche se non trovo ancora nulla)?
331 views

2 Answers

A.1 (5530 points)
0 0 3
by (5.5k points)
edited by

Ciao, per quanto riguarda l'apertura dei file va bene quanto scritto sopra da te. 

Altro consiglio che posso darti riguardo ai file è di utilizzare la libreria json (è già importata, quindi non stai barando perché è stata aggiunta appositamente per la risoluzione delle funzioni presenti) per facilitarti il lavoro sulle liste di dizionari presenti nei file json da leggere .

Anche se il fileout non esiste nella cartella dell'HW, questo verrà creato non appena esegui il codice per aprirlo in modalità scrittura ('w+' per creare il file nel caso sia inesistente, io ho comunque usato la modalità 'w' e funziona tutto correttamente).

Nel caso dei file che devi aprire posso dirti che io ho sempre aperto quelli in inglese e passo tutti i test, inoltre sta anche scritto nel testo dell'HW in questione quali file devi aprire (vedi sotto).

<dbsize>_<nometabella>(ad esempio, il db small è composto dai file small_students.json, small_teachers.json, small_courses.json e small_exams.json) 

X
XnXs (480 points)
6 23 25
by (480 points)
Grazie mille, si sa qualcosa riguardo ai file senza il dbfile? Oppure quale dovrebbe essere il fileout (lo devo creare io o no?)
A.1 (5530 points)
0 0 3
by (5.5k points)
edited by

Di nulla smiley.

no, non lo devi creare tu il fileout. Infatti se leggi la mia risposta precedente noterai che io i file li ho sempre aperti in modalità 'W' (scrittura) che non crea il file se inesistente, perché la modalità per fare ciò è 'W+' (crea il file se inesistente e scrivi sul file). Tra l'altro analizzando il test01.py mi sono reso conto che non accetta altri parametri tranne 'W', quindi, se vuoi passare i test, non utilizzare altri parametri se non 'W' per la scrittura sui fileout delle varie funzioni.

Potresti essere più chiaro sulla domanda: "si sa qualcosa riguardo ai file senza il dbfile?" perché non ho capito bene a cosa ti riferisci. 

X
XnXs (480 points)
6 23 25
by (480 points)
Scusa se rispondo ora non ho aperto q2a in quest'ultimo periodo. Con "file senza db" intendo i file:

Cognomi;

Corsi;

Docenti;

Esami;

Studenti;

Non ho capito cosa dovrei farci
L
Larenzz03 (5990 points)
3 14 65
by (6.0k points)
Devi utilizzare questi file nell'implementazione delle funzioni richieste, dovrai prima caricare i dati dei file in memoria, ad esempio utilizzando il metodo "json.load()" di Python per leggere i file in formato JSON. Una volta caricati i dati in memoria, potrai utilizzarli per implementare le funzioni richieste, ad esempio per trovare informazioni sugli studenti, i corsi, i docenti o gli esami
L
Larenzz03 (5990 points)
3 14 65
by (6.0k points)
Per leggere i file JSON di un database di dimensione specifica, è possibile creare il nome del file concatenando il valore del parametro dbsize con il nome della tabella. Ad esempio, per leggere il file JSON della tabella students del database di dimensione small, si potrebbe usare una stringa del genere:

filename = dbsize + '_students.json'

quindi, per aprire il file, si potrebbe usare il metodo "with open(filename, mode...)", come hai suggerito.

Per quanto riguarda la versione italiana o inglese dei file, puoi scegliere di usare solo una versione o entrambe. Ad esempio, puoi decidere di usare solo i file con il nome in italiano (ad esempio, "studenti.json" invece di "students.json"), o di usare entrambe le versioni (ad esempio, "students.json" e "studenti.json").

I file con i nomi cognomi, corsi, docenti e esami che sono privi di dbsize potrebbero essere file di supporto o file di backup. Ad esempio, potrebbero essere file di backup dei dati delle tabelle students, courses, teachers e exams, o potrebbero essere file di supporto che contengono informazioni aggiuntive sugli studenti, i corsi, i docenti e gli esami.

Per quanto riguarda il file di output fileout, non dovrai crearlo tu.  Apri file li ho sempre aperti in modalità 'W' (scrittura) e ricordati encoding utf8