這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。//本程式是為了根據cvs的內容,自動生即時效果的報文,第七列為最後值
//用法: 程式名+檔案名稱
package main
import (
"encoding/csv"
"flag"
"fmt"
"io"
"log"
"os"
"strings"
)
func main() {
//參數
flag.Parse()
fmt.Println(flag.NArg())
if flag.NArg() != 1 {
log.Printf("usage: command + filename")
return
}
//只取第1個參數做為檔案名稱
file, err := os.Open(flag.Arg(0))
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
reader := csv.NewReader(file)
reader.Comment = '#' //可以設定讀入檔案中的注釋符
reader.Comma = ',' //預設是逗號,也可以自己設定
//還可以設定以下資訊
//FieldsPerRecord int // Number of expected fields per record
//LazyQuotes bool // Allow lazy quotes
//TrailingComma bool // Allow trailing comma
//TrimLeadingSpace bool // Trim leading space
//line int
//column int
fout, err := os.OpenFile("out.txt", os.O_RDWR|os.O_APPEND|os.O_CREATE, 0666)
if err != nil {
fmt.Println("Error:", err)
return
}
defer fout.Close()
content := ""
k := 0 //第一行是欄位名,不需要
for {
record, err := reader.Read()
if err == io.EOF {
break
} else if err != nil {
fmt.Println("Error:", err)
return
}
if k > 0 { //record是[]strings, 怎樣直接獲得域值
for _, v := range record {
tmp := strings.Split(v, "|")
//fmt.Print("<" + tmp[1] + ">" + tmp[7] + "</" + tmp[1] + ">")
content = content + "<" + tmp[1] + ">" + tmp[7] + "</" + tmp[1] + ">"
}
}
k = k + 1
}
fmt.Printf("\n")
fout.WriteString(content + "\n")
fmt.Printf("\n")
}