Skip to content

Commit 54822ae

Browse files
committed
Solution chapter 6
1 parent addcca0 commit 54822ae

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

06_wc/wc.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#! /usr/bin/env python3
2+
import argparse
3+
import sys
4+
5+
def get_args():
6+
parser = argparse.ArgumentParser(
7+
prog='wc',
8+
description='Emulate wc (word count)')
9+
10+
parser.add_argument('file',
11+
metavar='FILE',
12+
type=argparse.FileType('rt'),
13+
default=[sys.stdin],
14+
help='Input file(s)',
15+
nargs='*')
16+
17+
return parser.parse_args()
18+
19+
def main():
20+
21+
args = get_args()
22+
23+
files = args.file
24+
25+
#print(type(files))
26+
27+
total_lines = 0
28+
total_words = 0
29+
total_bytes = 0
30+
31+
for fh in files:
32+
num_lines = 0
33+
num_words = 0
34+
num_bytes = 0
35+
for line in fh:
36+
num_lines += 1
37+
38+
#words = line.split()
39+
for word in line.split():
40+
num_words +=1
41+
42+
num_bytes += len(line)
43+
total_lines +=num_lines
44+
total_words +=num_words
45+
total_bytes +=num_bytes
46+
47+
print('{:8}{:8}{:8} {}'.format(num_lines, num_words, num_bytes, fh.name ))
48+
49+
if len(files) > 1:
50+
print('{:8}{:8}{:8} {}'.format(total_lines, total_words, total_bytes, 'total'))
51+
52+
if __name__ == '__main__':
53+
main()

0 commit comments

Comments
 (0)