linux运维

使用python实现ls命令(3)

2019-11-10  本文已影响0人  awsome365

概要

打算用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)
上一篇 下一篇

猜你喜欢

热点阅读