概要
打算用python写一个ls命令脚本,以练习python基础。这个文档就是记录该小项目的进展和学习心得。
ls
是Linux下最常用的命令之一,可以列出目录内文件即子目录名,可以配合众多参数使用。为此专门查看了Linux下man手册(我用ceontos7做的测试,其他Linux应该一样。但Windows环境下会有差异,比如Windows隐藏文件的方式与Linux不一样)。可以跳转首篇 查看这个小项目。
参数-A
--20191110
看来对ls
命令没有深入了解。刚刚看man手册时才发现ls -a
的意义,及和ls -A
的区别。之前参数-a的代码其实完成了参数-A的工作。
-a要显示"."和"..",而-A不显示。"."表示当前目录,".."表示上级目录。我试了下,即使在根目录下ls -a
也会显示".."。这样的话就不需要判断该目录是否有父目录了。即,只需加上"."和".."。
下面是ls
的python代码:
import os
doc=os.listdir()
for i in doc:
str1=i[0:1]
if str1 != '.':
print(i)
下面是ls -a
的python代码
import os
doc=os.listdir()
print(".")
print("..")
for i in doc:
print(i)
下面是ls -A
的python代码:
import os
doc=os.listdir()
for i in doc:
print(i)
现在已经实现ls``ls -a``ls -A
三条命令,但是需要三个独立的脚本调用。合并到一个python脚本,需要设计传参。传参使用到sys里的argv模块。
下面是整合ls``ls -a``ls -A
三条命令的python代码:
import os
import sys
doc = os.listdir()
if len(sys.argv) == 1 :
for i in doc:
if i[0] != '.':
print(i)
elif len(sys.argv) == 2:
if sys.argv[1] == "-a":
print(".")
print("..")
for i in doc:
print(i)
elif sys.argv[1] == "-A":
for i in doc:
print(i)