在Windows上使用Golang。尝试使用
os.Open("%userprofile%\\myfile.txt")
获取file path not found
和golang不能将%userprofile%
解析到我的C:\users\myusername
文件夹中。
答案 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