というのをやってる人がいたので、やってみた。
import sys def count(str): words = str.split() word_cnt = len(words) char_cnt = len(str) lines = str.split("\n") line_cnt = len(lines) if lines[-1] == '': line_cnt -= 1 return char_cnt, word_cnt, line_cnt for file in sys.argv[1:]: content = open(file, "r").read() char_count, word_count, line_count = count(content) print "chars =", char_count, " words =", word_count, " lines =", line_count, " filename =", file
実行:
^o^ > mywc.py mywc.py chars = 466 words = 59 lines = 19 filename = mywc.py
wcコマンドと比べてみる。
^o^ > wc mywc.py 19 59 485 mywc.py
なんか文字数が違うな。ちょうど行数の分だけ違う、ってことは改行文字のせいか?
ためしに mywc.py の改行をCR+LFからLFだけに変えてみと:
^o^ > wc mywc.py 19 59 466 mywc.py
文字数も合った。wcコマンドはCR+LFを2文字と数えて、(少なくともWindowsの)Pythonは1文字と数えるみたいだ。