Packages os et filepath
Variables d’environnement, chemins et interaction avec le système d’exploitation
Packages os et filepath est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.
os.Args — Arguments de la ligne de commande
os.Args contient les arguments de la ligne de commande. os.Args[0] est le nom du programme :
package main
import ("fmt"; "os")
func main() {
fmt.Println("Program:", os.Args[0])
if len(os.Args) < 2 {
fmt.Println("Usage: program <name>")
os.Exit(1)
}
fmt.Printf("Hello, %s!\n", os.Args[1])
}os.Getenv et os.Setenv
Lisez et écrivez les variables d'environnement :
package main
import ("fmt"; "os")
func main() {
// Read env var (returns "" if not set)
home := os.Getenv("HOME")
fmt.Println("HOME:", home)
// Set env var
os.Setenv("APP_ENV", "production")
fmt.Println(os.Getenv("APP_ENV")) // production
// Get with default pattern:
port := os.Getenv("PORT")
if port == "" { port = "8080" }
fmt.Println("Port:", port)
}os.Exit — Arrêt du programme
os.Exit arrête le programme avec un code d'état. 0 = réussite ; une valeur différente de zéro = erreur. Les fonctions différées ne s'exécutent PAS :
package main
import ("fmt"; "os")
func main() {
config := os.Getenv("CONFIG_PATH")
if config == "" {
fmt.Fprintln(os.Stderr, "error: CONFIG_PATH not set")
os.Exit(1) // signals error to the shell
}
fmt.Println("config:", config)
}os.Open, os.Create, os.ReadFile
Opérations sur les fichiers avec le paquet os :
package main
import ("fmt"; "os")
func main() {
// Read entire file
data, err := os.ReadFile("/etc/hostname")
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("hostname: %s", data)
// Write file (overwrites if exists)
err = os.WriteFile("/tmp/test.txt", []byte("hello\n"), 0644)
fmt.Println("write err:", err)
}os.Stat — Informations sur le fichier
os.Stat renvoie des informations sur un fichier ou un répertoire :
package main
import ("fmt"; "os")
func main() {
info, err := os.Stat("/tmp")
if err != nil {
if os.IsNotExist(err) {
fmt.Println("does not exist")
}
return
}
fmt.Println(info.Name()) // tmp
fmt.Println(info.IsDir()) // true
fmt.Println(info.Size()) // size in bytes
fmt.Println(info.Mode()) // file permissions
fmt.Println(info.ModTime()) // last modified time
}os.MkdirAll et os.RemoveAll
Créez et supprimez des arborescences de répertoires :
package main
import ("fmt"; "os")
func main() {
// Create nested directories
err := os.MkdirAll("/tmp/myapp/data/logs", 0755)
fmt.Println("mkdir:", err)
// Remove a file
err = os.Remove("/tmp/test.txt")
fmt.Println("remove:", err)
// Remove directory and all contents
err = os.RemoveAll("/tmp/myapp")
fmt.Println("removeAll:", err)
}path/filepath : Chemins multiplateformes
path/filepath gère les chemins de fichiers en utilisant le séparateur de chemins du système d'exploitation (/ sous Unix, \ sous Windows) :
package main
import ("fmt"; "path/filepath")
func main() {
// Join path components correctly
p := filepath.Join("/home", "user", "docs", "file.txt")
fmt.Println(p) // /home/user/docs/file.txt
// Split path and file
dir, file := filepath.Split(p)
fmt.Println(dir, file) // /home/user/docs/ file.txt
// Extension
fmt.Println(filepath.Ext(p)) // .txt
// Base name
fmt.Println(filepath.Base(p)) // file.txt
}filepath.Walk — Parcours des répertoires
Parcourez une arborescence de répertoires en visitant chaque fichier et chaque répertoire :
package main
import ("fmt"; "os"; "path/filepath")
func main() {
err := filepath.Walk("/tmp", func(path string, info os.FileInfo, err error) error {
if err != nil { return err }
if info.IsDir() {
fmt.Println("[DIR]", path)
} else {
fmt.Printf("[FILE] %s (%d bytes)\n", path, info.Size())
}
return nil
})
if err != nil { fmt.Println("walk error:", err) }
}filepath.Glob — Recherche par motif
Recherchez les fichiers correspondant à un motif glob :
package main
import ("fmt"; "path/filepath")
func main() {
// Find all .go files in current directory
matches, err := filepath.Glob("*.go")
if err != nil {
fmt.Println(err)
return
}
for _, m := range matches {
fmt.Println(m)
}
// Absolute path resolution
abs, _ := filepath.Abs("../myfile.txt")
fmt.Println(abs)
}os.TempDir et os.CreateTemp
Créez des fichiers temporaires en toute sécurité :
package main
import ("fmt"; "os")
func main() {
// System temp directory
fmt.Println(os.TempDir()) // /tmp
// Create a unique temp file
f, err := os.CreateTemp("", "myapp-*.json")
if err != nil {
fmt.Println(err)
return
}
defer os.Remove(f.Name()) // clean up
defer f.Close()
fmt.Println("temp file:", f.Name())
_, _ = f.WriteString(`{"status":"ok"}`)
}Vérification rapide
Quelle fonction assemble correctement les composants d'un chemin de fichier de manière multiplateforme ?
Récapitulatif : os et filepath
Résumé :
os.Args— arguments de la commande ;os.Getenv/Setenv— environnementos.ReadFile/WriteFilepour les entrées-sorties simples sur les fichiersos.Stat— informations sur le fichier ;os.IsNotExist(err)pour les fichiers absentsos.MkdirAll/RemoveAllpour la gestion des répertoiresfilepath.Join/Split/Ext/Basepour les chemins multiplateformesfilepath.Walkpour parcourir les arborescences de répertoires
Questions Fréquemment Posées
La leçon « Packages os et filepath » est-elle gratuite ?
Oui — le texte complet de « Packages os et filepath » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Packages os et filepath » ?
Variables d’environnement, chemins et interaction avec le système d’exploitation Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Go Academy ?
Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Packages os et filepath » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?
Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Packages fmt et strings
- strconv, math et sort
- Les essentiels du package time
- Packages os et filepath