這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
最近由於學習GO語言,所以把python實現的一個指令碼,用GO語言實現,來練習檔案操作,Regex,並且熟悉了GO語言的很多庫,和看了GO語言的庫的原始碼。
下面是一個統計的指令碼,實現了如下功能:
1.開啟目前的目錄下的一個檔案,迴圈讀取一行,並且利用strings庫,分割這行的字串,形成一個列表,並且分析這個列表裡面的資料;
2.讀取當前目前的所有檔案,迴圈處理;
package main
import (
"bufio"
"fmt"
"io"
"log"
"os"
"regexp"
"strings"
"time"
)
func main() {
//定義浮點型的變數old,並且初始化為0.0
old := 0.0
for {
total := 0.0
fail := 0.0
//得到目前的目錄名稱
dirname, _ := os.Getwd()
dir, _ := os.OpenFile(dirname, os.O_RDONLY, os.ModeDir)
//讀取目前的目錄下所有的檔案名稱和目錄名稱
names, _ := dir.Readdir(-1)
//迴圈讀取當前的檔案名稱
for _, name := range names {
//不是目錄的話,處理
if !name.IsDir() {
s := name.Name()
//匹配aa檔案名稱的檔案
fn, _ := regexp.MatchString("aa", s)
if fn {
file, err := os.Open(s)
if err != nil {
log.Fatal(err)
}
//負載檔案的buffer
r := bufio.NewReader(file)
for {
//讀取檔案的一行
line, err := r.ReadString('\n')
if io.EOF == err || nil != err {
break
}
list := strings.Split(line, "|")
if list[14] != "0" {
fail += 1.0
}
total += 1.0
}
file.Close()
}
}
}
new := total - old
old = total
success := total - fail
percent := int(success/total * 100)
fmt.Println("percent=", percent, "total=", total, "fail=", fail, "success=", success, "new=", new)
//延遲1秒
time.Sleep(1e9)
}
}