10. 行数のカウント
行数をカウントせよ.確認にはwcコマンドを用いよ.
###Go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
// 読み込みファイルを指定
name := "../hightemp.txt"
line := 0
// 読み込むファイルを開く
f, err := os.Open(name)
if err != nil {
fmt.Printf("os.Open: %#v\n",err)
return
}
defer f.Close() // 終了時にクリーズ
// スキャナライブラリを作成
scanner := bufio.NewScanner(f)
// データを1行読み込み
for scanner.Scan() {
line++;
}
// エラーが有ったかチェック
if err = scanner.Err(); err != nil {
fmt.Printf("scanner.Err: %#v\n",err)
return
}
// 行数を表示
fmt.Println("Line",line)
}
###python
import sys
line = 0
# ファイルを開く
with open("../hightemp.txt", "r") as f:
# 一行ずつ読み込む
for data in f:
# 行数を加算
line += 1
# 行数を表示
print("Line",line)
###Javascript
// モジュールの読み込み
var fs = require("fs");
var readline = require("readline");
var line = 0;
// ストリームを作成
var stream = fs.createReadStream("../hightemp.txt", "utf8");
// readlineにStreamを渡す
var reader = readline.createInterface({ input: stream });
// 行読み込みコールバック
reader.on("line", (data) => {
line = line + 1
});
// クローズコールバック
reader.on("close", function () {
console.log("Line",line);
});
まとめ
やっと 「第2章: UNIXコマンドの基礎」 へ突入!!。
2章に入ったとのことで、Pythonのバージョン設定をやっと 3.7 へ変更しました。
IDEの設定だけですけど・・・。設定がどこにあるか探すのが・・・。と言い訳。
ファイルの読み込みをそれぞれの言語調べながら。
Go,Python はそれほど困らなかったが、
Javascirpt は。おぉおぉ。なんか面白い。非同期との事もあり考え方は注意が必要か。
補足
Go 言語で変数名を fname としていたが、IDE(Golang) が typo? と言ってくる。
有り難いのかなぁ。とりあえず name へ変更し回避。