99
1010parser .add_argument ("-n" , "--number" , action = "store_true" , help = "Number all output lines" )
1111parser .add_argument ("-b" , "--number-nonblank" , action = "store_true" , help = "Number non-empty lines only" )
12- parser .add_argument ("path " , help = "File to read" )
12+ parser .add_argument ("paths " , nargs = '+' , help = "Files to read" )
1313
1414args = parser .parse_args ()
1515
16- # Read the file
17- with open (args .path , "r" ) as f :
18- content = f .read ()
19-
16+ line_number = 0 # Shared counter across all files
2017
21- # Check if numbering is needed
22- if args .number :
23- lines = content . split ( " \n " )
24- numbered_lines = []
18+ # Process each file
19+ for path in args .paths : # LEVEL 1: for loop starts
20+ with open ( path , "r" ) as f : # LEVEL 2: inside for loop
21+ content = f . read () # LEVEL 3: inside with block
2522
26- for index , line in enumerate (lines ):
27- line_number = index + 1
28- numbered_line = f"{ line_number :6} \t { line } " # Format with tab like real cat
29- numbered_lines .append (numbered_line )
30-
31- print ("\n " .join (numbered_lines ))
32-
33- elif args .number_nonblank :
34- lines = content .split ("\n " )
35- numbered_lines = []
36- line_number = 0
37-
38- for line in lines :
39- if line .strip () == "" : # Empty line
40- numbered_lines .append (line ) # Don't number it
41- else : # Non-empty line
42- line_number = line_number + 1
23+ # Check if numbering is needed
24+ if args .number : # LEVEL 2: inside for loop
25+ lines = content .split ("\n " ) # LEVEL 3: inside if
26+ numbered_lines = []
27+
28+ for index , line in enumerate (lines ): # LEVEL 3: inside if
29+ line_number = line_number + 1 # LEVEL 4: inside inner for
4330 numbered_line = f"{ line_number :6} \t { line } "
4431 numbered_lines .append (numbered_line )
32+
33+ print ("\n " .join (numbered_lines )) # LEVEL 3: inside if
4534
46- print ("\n " .join (numbered_lines ))
35+ elif args .number_nonblank : # LEVEL 2: inside for loop
36+ lines = content .split ("\n " ) # LEVEL 3: inside elif
37+ numbered_lines = []
38+
39+ for line in lines : # LEVEL 3: inside elif
40+ if line .strip () == "" : # LEVEL 4: inside inner for
41+ numbered_lines .append (line )
42+ else :
43+ line_number = line_number + 1
44+ numbered_line = f"{ line_number :6} \t { line } "
45+ numbered_lines .append (numbered_line )
46+
47+ print ("\n " .join (numbered_lines ))
4748
48- else :
49- print (content )
49+ else : # LEVEL 2: inside for loop
50+ print (content ) # LEVEL 3: inside else
0 commit comments