Golang sur Windows. Essayer d'utiliser
os.Open("%userprofile%\\myfile.txt")
Obtenir chemin de fichier introuvable
et golang ne résout pas % userprofile%
en mon C: \ users Dossier \ myusername
.
4 Réponses :
userprofile := os.Getenv("USERPROFILE") os.Open(userprofile+"\\myfile.txt")
Jetez un œil à http: / /www.golangprograms.com/how-to-set-get-and-list-environment-variables.html
Vous pouvez lire la valeur d'environnement 'userprofile' et créer le chemin avant de le transmettre à os.Open
Pour obtenir un descripteur de fichier et rendre votre programme un peu plus portable, essayez
userprofile := os.Getenv("USERPROFILE") f, err := os.Open(path.Join(userprofile, "myfile.txt"))
os.Getenv ()
lira la variable d'environnement et
code> path.Join () se chargera de construire correctement le chemin (donc pas besoin de faire \\
).
Au lieu de os. Getenv ()
vous pouvez également consulter os.LookupEnv () code>
. Cela vous dira si la variable d'environnement que vous recherchez est vide ou simplement inexistante. Un bon exemple de la façon dont vous pouvez l'utiliser pour définir les valeurs par défaut peut être trouvé dans cette réponse sur SO.
Je viens d'écrire un paquet pour faire ça. Commentaires de bienvenue
https://gitlab.com/stu-b-doo/windowspathenv/
fmt.Println(windowspathenv.Resolve("%USERPROFILE%/Documents")) // C:\Users\YourName\Documents
Pour les shells POSIX, vous pouvez utiliser os.ExpandEnv , mais il ne semble pas prendre en charge le Variables de style
% VAR%
que vous utilisez. Il serait cependant trivial d'implémenter votre propre version.