File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
implement-shell-tools/cat/sample-files Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change 1+ #!/usr/bin/env python3
2+ import sys
3+ import os
4+
5+ def print_file (filename , number_all = False , number_nonempty = False ):
6+ try :
7+ with open (filename , 'r' ) as f :
8+ lines = f .readlines ()
9+ except FileNotFoundError :
10+ print (f"cat: { filename } : No such file" )
11+ return
12+
13+ counter = 1
14+ for line in lines :
15+ line = line .rstrip ('\n ' )
16+ if number_all :
17+ print (f"{ counter :6} { line } " )
18+ counter += 1
19+ elif number_nonempty :
20+ if line .strip ():
21+ print (f"{ counter :6} { line } " )
22+ counter += 1
23+ else :
24+ print (line )
25+ else :
26+ print (line )
27+
28+ def main ():
29+ import argparse
30+
31+ parser = argparse .ArgumentParser (description = "A Python implementation of cat" )
32+ parser .add_argument ('files' , nargs = '+' , help = "Files to print" )
33+ parser .add_argument ('-n' , '--number-all' , action = 'store_true' , help = "Number all lines" )
34+ parser .add_argument ('-b' , '--number-nonempty' , action = 'store_true' , help = "Number non-empty lines" )
35+ args = parser .parse_args ()
36+
37+ for file in args .files :
38+ print_file (file , number_all = args .number_all , number_nonempty = args .number_nonempty )
39+
40+ if __name__ == "__main__" :
41+ main ()
You can’t perform that action at this time.
0 commit comments