Voglio aprire un file dato "directory/subdirectory/file.txt"
in golang. Qual è il modo consigliato per esprimere un tale percorso in modo agnostico sul sistema operativo (ad es. Backslash in Windows, barre rovesciate in Mac e Linux)? Qualcosa come il modulo os.path
di Python?Come si creano percorsi di file crossplatform in Go?
risposta
Per creare e modificare i percorsi specifici del sistema operativo utilizzare direttamente os.PathSeparator
e il pacchetto path/filepath
.
Un metodo alternativo è quello di utilizzare sempre '/'
e il pacchetto path
in tutto il programma. Il pacchetto path
utilizza '/'
come separatore di percorso indipendentemente dal sistema operativo. Prima di aprire o creare un file, convertire il percorso/-separato in una stringa di percorso specifica del sistema operativo chiamando filepath.FromSlash(path string)
. I percorsi restituiti dal sistema operativo possono essere convertiti in/percorsi separati chiamando lo filepath.ToSlash(path string)
.
Go dispone del pacchetto path
per l'unione e la suddivisione dei percorsi dei file, ma non è necessario utilizzarlo. Vai considera le barre in avanti come separatore universale. "directory/subdirectory/file.txt"
verrà aperto correttamente indipendentemente dal sistema operativo runtime.
Utilizzare path/filepath
anziché path
. path
è destinato solo ai percorsi separati dalla barra (come quelli utilizzati negli URL), mentre path/filepath
gestisce i percorsi tra diversi sistemi operativi.
Deve essere contrassegnato come risposta giusta, molto più facile da capire - basta usare filepath ovunque e ... profitto! – QtRoS
- 1. Come posso aprire file usando percorsi relativi in Go?
- 2. Come si creano i file con JavaScript?
- 3. Quando si creano programmi Go per il rilascio, è prassi normale utilizzare semplicemente "go build"?
- 4. Come si creano vettori multidimensionali in Scala?
- 5. Come si creano sottotipi in Moose?
- 6. Come si creano ID dinamici in Haml?
- 7. Generatore di numeri casuali Crossplatform
- 8. Crossplatform WebView in Qt5.6
- 9. Come si creano nodi di sintassi in Roslyn da zero?
- 10. Come si creano espressioni regolari Perl in modo dinamico?
- 11. Come si creano diagrammi di entità in Visual Studio?
- 12. Come si creano 3 immersioni regolabili?
- 13. Come si creano ripetute linee diagonali come sfondo in WPF?
- 14. Xamarin.Forms Autocomplete CrossPlatform
- 15. Come si creano i file di registro in log4j per l'esecuzione del programma?
- 16. Come si inverte una matrice in Go?
- 17. Come calcolare sha256 checksum file in Go
- 18. Come si elimina una sezione in Go?
- 19. OpenAL for CrossPlatform Development
- 20. Come si creano le categorie nidificate in un database?
- 21. Come si creano storie utente e attività in Jira/GreenHopper?
- 22. Come si creano stadi manuali in Gitlab CI?
- 23. Kivy: icona notifica crossplatform
- 24. Come si creano vettori con intervalli specifici in R?
- 25. Come si creano notifiche personalizzate in Swift 3?
- 26. Come si creano dinamicamente gli elementi di visualizzazione Backbone?
- 27. Ottieni file inode in Go
- 28. Come si creano le risorse riscritte nella cache di nginx?
- 29. Come si creano le pagine di prova WCF?
- 30. Come gestire ~ nei percorsi file
Hai provato su Windows? –
@Atom Non possiedo una macchina Windows. [Russ Cox dice Go tratta/"come separatore di percorso su tutte le piattaforme] (http://groups.google.com/group/golang-nuts/browse_thread/thread/5527660c2d860ca3), che mi sembra abbastanza buono. – Jjed
Russ ha rilasciato questo commento il 2010-01-09. Da allora sono state apportate alcune modifiche alla gestione dei percorsi: vedi http://golang.org/doc/devel/weekly.html#2011-03-07 –