用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - python代码库

自定义函数实现linux ls -a -l 命令

2020-12-03 作者: gaojiawei举报

[python]代码库

from pathlib import Path
import argparse
import datetime
import stat
def convert_mode(mode:int):
    modelist = ['r', 'w', 'x', 'r', 'w', 'x', 'r', 'w', 'x']
    modestr = bin(mode)[-9:]    # '664' '110110100'
    ret = ''
    for i,c in enumerate(modestr):
        if c == '1':
            ret += modelist[i]
        else:
            ret += '-'
    return ret
 
#文件类型 d, s ,p , l ,c ,b
def convert_type(file:Path):
    ret = ""
    if file.is_symlink():
        ret = "l"
    elif file.is_fifo():
        ret = 'p'
    elif file.is_socket():
        ret = 's'
    else:
        ret = '-'
    return ret
 
 
 
def showdir(path='.',all=False,detail=False):
    p = Path(path)
    for file in p.iterdir():
        if not all and str(file.name).startswith('.'):       # .开头不打印
            continue
        # -l
        # -rw-rw-r--  1 python python   14852 Nov 17 22:32 Untitled63.ipynb
        if detail:
            st = file.stat()
            yield (stat.filemode(st.st_mode),st.st_nlink,file.owner(),file.group(),st.st_size,datetime.datetime.fromtimestamp(st.st_atime).strftime('%Y-%m-%d %H:%M:%S'),file.name)
        else:
            yield file.name
 
parser = argparse.ArgumentParser(prog='ls',add_help=False,description='list all files')    #构造解析器
parser.add_argument('path',nargs='?',default='.',help='path help')
parser.add_argument('-l',action='store_true')
parser.add_argument('-a','--all',action='store_true')
 
if __name__ == "__main__":
 
 
#ls
    # showdir('f:/')
    args = parser.parse_args(('.','-la'))   #e:/为指定的目录,这个可以替换为你自己的目录
    parser.print_help()
    print('args=',args)
    print(args.path,args.l,args.all)
    for st in showdir(args.path,args.all,args.l):
        print(st)



网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...