Skip to content

Commit a5a8cb4

Browse files
committed
fixed the design and expanding
1 parent 2909e56 commit a5a8cb4

2 files changed

Lines changed: 11 additions & 27 deletions

File tree

implement-shell-tools/cat/mycat.py

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#!/usr/bin/env python3
22

33
import sys
4-
import glob
54

65
def main():
76
args = sys.argv[1:]
@@ -10,49 +9,33 @@ def main():
109
print("Usage: cat [-n|-b] file...", file=sys.stderr)
1110
sys.exit(1)
1211

13-
number_all = False
14-
number_nonempty = False
12+
number_mode = "none"
1513
paths = []
1614

1715
for a in args:
1816
if a == "-n":
19-
number_all = True
17+
number_mode = "all"
2018
elif a == "-b":
21-
number_nonempty = True
19+
number_mode = "non_empty"
2220
else:
2321
paths.append(a)
24-
25-
if number_nonempty:
26-
number_all = False
27-
28-
files = expand_paths(paths)
22+
23+
2924

3025
had_error = print_lines(
31-
files,
32-
number_all=number_all,
33-
number_nonempty=number_nonempty,
26+
paths,
27+
number_mode=number_mode,
3428
)
3529

3630
if had_error:
3731
sys.exit(1)
3832

39-
40-
def expand_paths(paths):
41-
"""Expand glob patterns and return sorted unique file list."""
42-
files = []
43-
for p in paths:
44-
matches = glob.glob(p)
45-
if matches:
46-
files.extend(matches)
47-
else:
48-
files.append(p) # keep as-is (will error later if missing)
49-
return sorted(files)
5033

5134
def read_lines(file):
5235
with open(file, "r", encoding="utf-8") as f:
5336
return f.readlines()
5437

55-
def print_lines(files, number_all=False, number_nonempty=False):
38+
def print_lines(files, number_mode="none"):
5639
had_error = False
5740
line_no = 1
5841
for file in files:
@@ -66,13 +49,13 @@ def print_lines(files, number_all=False, number_nonempty=False):
6649
for line in lines:
6750
is_empty = (line.strip() == "")
6851

69-
if number_nonempty:
52+
if number_mode == "non_empty":
7053
if not is_empty:
7154
prefix = f"{line_no:6}\t"
7255
line_no += 1
7356
else:
7457
prefix = ""
75-
elif number_all:
58+
elif number_mode=="all":
7659
prefix = f"{line_no:6}\t"
7760
line_no += 1
7861
else:

prep-exercise/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.venv/

0 commit comments

Comments
 (0)