Golang 讀取檔案並統計內容

2022-07-06 18:42:09 字數 1460 閱讀 9139

上次我們從命令列接收使用者輸入,並統計了每次輸入內容出現的次數,今天對程式加以改造,使其能夠讀取檔案內容,並統計每行文字出現的次數。

首先,我們把接收輸入的邏輯封裝成乙個函式:

// scan.go

package main

import (

"os"

"fmt"

"bufio"

)func main()

}// 統計行數

func countlines(file *os.file, counts map[string]int)

counts[line]++

}}

上面的 coutlines() 函式有兩個引數:file *os.file 和 counts map[string]int,第乙個引數可以接收標準輸入或檔案物件,第二個引數接收乙個 map 引用。

然後,我們移除接收命令列輸入的邏輯,替換為讀取當前目錄下的 test.txt 檔案:

// scan.go

package main

import (

"os"

"fmt"

"bufio"

)func main()

countlines(file, counts)

// 關閉檔案

file.close()

for line, n := range counts

}// 統計行數

func countlines(file *os.file, counts map[string]int)

}

我們使用 os.open 開啟 test.txt 檔案,如果出現異常,則進行異常處理,如果讀取成功,則統計內容,最後關閉檔案。

test.txt 檔案內容如下:

hello

world

hello

下面是程式的執行結果:

$ go run scan.go

# 輸出內容

2 : hello

1 : world

除上述方式之外,我們還可以使用 io/ioutil 中的方法來讀取檔案,然後以換行符分割進行統計,實現**如下:

// split.go

package main

import (

"os"

"fmt"

"strings"

"io/ioutil"

)func main()

// 將資料轉換為字串 然後以換行符分割

lines := strings.split(string(data), "\n")

for _, line := range lines

for line, n := range counts

}

讀取盤點機內容並統計結果

例如有一盤點機檔案,格式如下 條碼1,數量 條碼2條碼1 條碼3,3 條碼1條碼2,2 然後統計出條碼1,2,3的對應數量,沒有,號的預設數量為1 這個可以用python的元組和字典來表示 def read s file open s,r s file.readlines s.sort print ...

golang讀取檔案

提前建乙個檔案文字helloworld.txt,現在可以在go程式中使用絕對檔案路徑將helloworld整個檔案讀取。中使用到 ioutol包中的 readfile函式。在go語言標準庫文件中它的用法是 func readfile filename string byte,error 說明 rea...

golang 讀取檔案

使用go語言讀取檔案的各種方式整理。整個檔案讀到記憶體,適用於檔案較小的情況 func readallintomemory filename string content byte,err error defer fp.close fileinfo,err fp.stat if err nil bu...