Skip to content

Commit 3623a1d

Browse files
committed
finished ls.py
1 parent 0318f77 commit 3623a1d

File tree

1 file changed

+34
-0
lines changed
  • implement-shell-tools/ls

1 file changed

+34
-0
lines changed

implement-shell-tools/ls/ls.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import argparse
2+
import os
3+
4+
5+
def get_files(directory):
6+
files = os.listdir(directory)
7+
files.extend([".", ".."])
8+
files.sort(key=str.lower)
9+
return files
10+
11+
12+
def display_files(files, show_all=False, one_per_line=False):
13+
if not show_all:
14+
files = [f for f in files if not f.startswith(".")]
15+
16+
if one_per_line:
17+
for file in files:
18+
print(file)
19+
else:
20+
print(" ".join(files))
21+
22+
23+
parser = argparse.ArgumentParser()
24+
parser.add_argument("directory", nargs="?", default=".")
25+
parser.add_argument("-1", dest="one_per_line", action="store_true", help="list one file per line")
26+
parser.add_argument("-a", dest="show_all", action="store_true", help="include hidden files")
27+
28+
args = parser.parse_args()
29+
30+
try:
31+
files = get_files(args.directory)
32+
display_files(files, show_all=args.show_all, one_per_line=args.one_per_line)
33+
except OSError as e:
34+
print(f"ls: {e}")

0 commit comments

Comments
 (0)