【GO語言】檔案操作例子

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

    最近由於學習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)
       }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.