Как разрешить переменные среды пользователя в filepath - PullRequest
1 голос
/ 28 марта 2019

Голанг на окнах.Попытка использовать

os.Open("%userprofile%\\myfile.txt")

Получение file path not found и golang не разрешает %userprofile% в мою папку C:\users\myusername.

Ответы [ 3 ]

4 голосов
/ 28 марта 2019

Чтобы получить дескриптор файла и сделать вашу программу немного переносимой, попробуйте

userprofile := os.Getenv("USERPROFILE")
f, err := os.Open(path.Join(userprofile, "myfile.txt"))

os.Getenv() будет считывать переменную среды, а path.Join() позаботится о правильном построении пути (поэтому не нужно делать \\).

Вместо os.Getenv() вы также можете посмотреть на os.LookupEnv(). Это скажет вам, является ли переменная среды, которую вы ищете, пустой или просто не существует. Хороший пример того, как вы можете использовать это для установки значений по умолчанию, можно найти в этом ответе на SO.

0 голосов
/ 28 марта 2019

Посмотрите на http://www.golangprograms.com/how-to-set-get-and-list-environment-variables.html

Вы можете прочитать значение окружения 'userprofile' и построить путь перед передачей его в os.Open

0 голосов
/ 28 марта 2019
userprofile := os.Getenv("USERPROFILE")
os.Open(userprofile+"\\myfile.txt")
...