上次我們從命令列接收使用者輸入,並統計了每次輸入內容出現的次數,今天對程式加以改造,使其能夠讀取檔案內容,並統計每行文字出現的次數。
首先,我們把接收輸入的邏輯封裝成乙個函式:
// 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...