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.

Separatore path macchina virtuale

r
rapiroma (440 points)
4 8 14
in Es3 by (440 points)
closed by

Ciao a tutti,

ho un problema con i test dell'esercizio 3. Sembrerebbe che la macchina virtuale non trovi il percorso di un file/directory.

Avendo provato i test in locale sul mio PC Windows e non avendo avuto nessun problema (se non un ordinamento per uno dei test, che spero di risolvere domani) mi viene il dubbio che il separatore delle cartelle della macchina virtuale sia diverso dal separatore utilizzato in Windows. Per intenderci in Windows il separatore e' il carattere "\". Visto che io lo utilizzo per fare un conteggio di profondità, non vorrei che fosse quello che possa dargli "fastidio". Anche se pensavo di aver sostituito tutti i caratteri "\" con os.path.sep

Per caso qualcun altro ha avuto un problema simile di file non trovato? Ecco l'errore: 

> files = os.listdir(directory.percorso()) 

E FileNotFoundError= [Errno 2] No such file or directory= 'dirs\\Informatica'

Fallisco praticamente subito tutti i test...

Vlr

586 views
closed with the note: answered

3 Answers

marco.giuliani (23860 points)
4 13 62
by (23.9k points)
Sì, la macchina virtuale gira su un altro sistema operativo, e come separatore utilizza /.

Forse ti può essere utile os.path.join, oppure se usi split o count, magari cambia \ con / e prova a ricaricarlo
r
rapiroma (440 points)
4 8 14
by (440 points)
Credo che il problema sia dovuto al fatto che per eseguire i test sul mio computer converto, con un semplice replace, il separatore del parametro di input dei test con il separatore in Windows. Nella conversione però non tengo conto del S.O.

Cambio questo punto e riprovo.
Z
ZeroCrystal (4390 points)
8 14 46
by (4.4k points)
edited by

Non ti conviene concatenare a mano i nomi di file e cartelle. Utilizza piuttosto la funzione os.path.join(path, *paths).

Accetta un qualsiasi numero di parti di percorso (minimo due), ad esempio l'indirizzo di una directory e il nome di un file, e restituisce una singola stringa dove tutti i parametri sono concatenati utilizzando il separatore valido sul sistema operativo di esecuzione.

Xriuk (13590 points)
8 24 116
by (13.6k points)
Usa "/" invece di "\", con Python funziona anche su Windows...
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
meglio ancora ... os.path.join