go语言读取csv文件时read xxx.csv: Access is denied.
go语言读取文件的os.OpenFile()函数
os.OpenFile(“example.txt”,os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
os.OpenFile("example.txt",os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
os.OpenFile 函数的第二个参数是一个整数,用于指定文件的打开模式。这个参数决定了文件在打开时的行为,例如读取、写入、追加等。以下是常见的打开模式:
os.O_RDONLY:只读。文件以只读模式打开,不可写入。
os.O_WRONLY:只写。文件以只写模式打开,不可读取。
os.O_RDWR:读写。文件以可读写模式打开。
os.O_APPEND:追加。文件以追加模式打开,写入数据时会追加到文件末尾。
os.O_CREATE:创建。如果文件不存在,会创建一个新文件。
os.O_TRUNC:截断。如果文件已经存在,会截断文件内容。
这些参数可以通过按位 OR 运算来组合,以实现不同的打开模式。例如,os.O_RDWR | os.O_CREATE 表示以读写模式打开文件,如果文件不存在则创建它。
如果我现在有一个aba.csv的文件,怎么读取其中的数据?
func main() {
directory, err := os.Getwd()
if err != nil {
fmt.Println(err)
}
fmt.Println("当前工作目录是:", directory)
f, err := os.OpenFile("./aba.csv", os.O_RDWR, 0644)
if err != nil {
fmt.Println("打开csv文件失败:", err)
return
}
defer f.Close()
//读数据
reader := csv.NewReader(f)
//Comma是字段分隔符
records, err := reader.ReadAll()
if err != nil {
fmt.Println("读取数据错误:", err)
return
}
//读取数据出来,records是文件record中的行,field是数据行records中的第几列
for _, record := range records {
for _, field := range record {
fmt.Print(field, " ")
}
//每一行打印完后需要换行
fmt.Println()
}
}
输出结果
当前工作目录是: D:\study\niuma
X Y RSSI Label
2 4 -23 6
5 1 -34 4
2 4 -68 5