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

Do you need help?

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

567 views
closed with the note: answered

3 Answers

marco.giuliani (23860 points)
2 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)
7 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)
6 24 116
by (13.6k points)
Usa "/" invece di "\", con Python funziona anche su Windows...
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
meglio ancora ... os.path.join