2
votes

Comment résoudre les variables d'environnement utilisateur dans le chemin de fichier

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 .


1 commentaires

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.


4 Réponses :


0
votes
userprofile := os.Getenv("USERPROFILE")
os.Open(userprofile+"\\myfile.txt")

0 commentaires

-1
votes

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


0 commentaires

6
votes

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.


0 commentaires

0
votes

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


0 commentaires