加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang 一行一行读文件

发布时间:2020-12-16 18:15:56 所属栏目:大数据 来源:网络整理
导读:package mainimport ( "bufio" "fmt" "os")func main() { counts := make(map[string]int) files := os.Args[1:] if len(files) == 0 { countLines(os.Stdin,counts) } else { for _,arg := range files { f,err := os.Open(arg) if err != nil { fmt.Fprint
package main

import (
        "bufio"
        "fmt"
        "os"
)
func main() {
        counts := make(map[string]int)
        files := os.Args[1:]
        if len(files) == 0 {
                countLines(os.Stdin,counts)
        } else {
                for _,arg := range files {
                        f,err := os.Open(arg)
                        if err != nil {
                                fmt.Fprintf(os.Stderr,"dup2: %vn",err)
                                continue
                        }
                        countLines(f,counts)
                        f.Close()
                }
        }
        for line,n := range counts {
                fmt.Printf("%dt%sn",n,line)
        }
}

func countLines(f *os.File,counts map[string]int) {
        input := bufio.NewScanner(f)
        for input.Scan() {
                counts[input.Text()]++
        }
        // NOTE: ignoring potential errors from input.Err()
}


go run main.go a.txt


另一种方法:

package main

import (
	"fmt"
	"io/ioutil"
	"os"
	"strings"
)

func main() {
	counts := make(map[string]int)
	for _,filename := range os.Args[1:] {
		data,err := ioutil.ReadFile(filename)
		if err != nil {
			fmt.Fprintf(os.Stderr,"dup3: %vn",err)
			continue
		}
		for _,line := range strings.Split(string(data),"n") {
			counts[line]++
		}
	}
	for line,n := range counts {
		if n > 1 {
			fmt.Printf("%dt%sn",line)
		}
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读