1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3
4###
5### カレントディレクトリのpythonソースの行数をそれぞれ表示する
6###
7
8import os
9import subprocess
10
11
12def count_py_lines1(dirname):
13 print('*** count_by_lines1')
14 # ファイルとディレクトリのリスト
15 files = os.listdir(dirname)
16 files.sort()
17 for f in files:
18 # 拡張子をチェックしてpythonのソースであれば行数を数える
19 if os.path.splitext(f)[1] == '.py':
20 with open(f, 'r') as fp:
21 c = len(fp.readlines())
22 print('{} : number of lines = {}'.format(f, c))
23
24
25def count_py_lines2(dirname):
26 print('*** count_by_lines2')
27 # wcコマンドで行数を数える
28 cmd = 'wc -l {}/*.py'.format(dirname)
29 r = subprocess.run(cmd, shell=True, capture_output=True, text=True)
30 # コマンドの出力からファイル名と行数を取り出す
31 for line in r.stdout.split('\n'):
32 l = line.strip().split()
33 if len(l) == 2 and os.path.splitext(l[1])[1] == '.py':
34 c = l[0]
35 f = os.path.split(l[1])[1]
36 print('{} : number of lines = {}'.format(f, c))
37
38
39if __name__ == '__main__':
40 # pythonのみで実装したもの
41 count_py_lines1('.')
42 # シェルコマンドの結果を処理したもの
43 count_py_lines2('.')