如何解析文件路径中的用户环境变量

时间:2019-03-27 21:33:35

标签: windows go environment-variables

在Windows上使用Golang。尝试使用

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

获取file path not found和golang不能将%userprofile%解析到我的C:\users\myusername文件夹中。

4 个答案:

答案 0 :(得分:4)

要获取文件句柄并使程序更易于移植,请尝试

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

os.Getenv()将读取环境变量,而path.Join()将负责正确构造路径(因此无需执行\\)。

您可能还想查看os.LookupEnv(),而不是os.Getenv()。这将告诉您要查找的环境变量是否为空或根本不存在。在SO上的this答案中找到了一个很好的例子来说明如何使用它来设置默认值。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

只需编写一个程序包即可执行此操作。欢迎反馈

https://gitlab.com/stu-b-doo/windowspathenv/

        private void btnCalculate_Click(object sender, EventArgs e)
    {
        string dateStr = listBox1.SelectedItem.ToString().Split(',')[3];
        DateTime date = DateTime.ParseExact(dateStr, "yyyy/mm/dd", System.Globalization.CultureInfo.InvariantCulture);
        if (rbtnYear.Checked)
        {
            double differenceYear = (DateTime.Now.Year - date.Year);
            txtBoxYear.Text = differenceYear.ToString();
        }
        if (rbtnMonth.Checked)
        {
            double differenceMonth = (DateTime.Now.Month - date.Month);
            txtBoxMonth.Text = differenceMonth.ToString();
        }
        if (rbtnDay.Checked)
        {
            double differenceDay = (DateTime.Now.Day - date.Day);
            txtBoxDay.Text = differenceDay.ToString();
        }
    }

答案 3 :(得分:-1)

看看http://www.golangprograms.com/how-to-set-get-and-list-environment-variables.html

您可以读取“ userprofile”环境值并构建路径,然后再将其传递给os.Open