というのをやってる人がいたので、やってみた。
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文字と数えるみたいだ。