go读取url的csv文件

前言

读取url中的csv文件信息

错误写法

func main()  {
	str:="xxx/某大赛领奖名单.csv"
	resp,e:=http.Get(str)
	defer resp.Body.Close()
	if e!=nil{
		errorx.Wrap(e).Error()
		return
	}
	excelFile,createErr:=os.Create("test.csv")
	if createErr!=nil{
		errorx.Wrap(createErr).Error()
		return
	}
	body,readErr:=ioutil.ReadAll(resp.Body)
	s:=byteString(body)
	fmt.Println(s)	//这里发现是乱码的
	if readErr!=nil{
		errorx.Wrap(readErr).Error()
		return
	}
	num,writeErr:=excelFile.Write(body)
	if writeErr!=nil{
		errorx.Wrap(writeErr).Error()
		return
	}
	fmt.Println(num)
	if e:=excelFile.Close(); e!=nil{
		errorx.Wrap(e).Error()
		return
	}
	strs,csvErr:=ReadCSV("test.csv")	//发现在文件管理器中只有用excel打开才是正常的
	if csvErr!=nil{
		fmt.Println(errorx.Wrap(csvErr).Error())
	}
	fmt.Println(strs)
}

正确写法

func main() {
	resp, e := http.Get("xxx/某大赛获奖名单.csv")
	if e != nil {
		panic(e)
	}
    if resp == nil {
        panic("resp nil")
    }

    if resp.Body == nil {
        panic("body nil")
    }

    buf, e := ioutil.ReadAll(resp.Body)
    if e != nil {
        panic(e)
    }

    r := csv.NewReader(bytes.NewReader(buf))

    records, e:= r.ReadAll()
    if e!=nil {
        panic(e)
    }

    fmt.Println(records)
}

你可能感兴趣的:(go读取url的csv文件)