Argparse模組的使用 ls功能的實現

2021-09-24 21:03:59 字數 2793 閱讀 1630

argparse模組是用於python中命令列引數解析的模組

以下**為ls功能的實現

import argparse

import stat

from pathlib import path

from datetime import datetime

#獲得乙個引數解析器

parser = argparse.argumentparser(

prog =

'ls'

, description =

'list information about the files'

, add_help =

false

)#新增引數

parser.add_argument(

'path'

, nargs=

'?', default=

'.',

help

='filepath'

)#位置引數,?表示可有可無,預設值,幫助文字

parser.add_argument(

'-l'

, dest=

'long'

, action=

'store_true'

,help

='use a long listing format'

)parser.add_argument(

'-a'

,'--all'

, action=

'store_true'

,help

='do not ignore entries starting with .'

)parser.add_argument(

'-h'

,'--human-readable'

, action=

'store_true'

,help

='with -l, print sizes in human readable format'

)def

listdir

(path,

all=

false

, detail=

false

, human=

false):

def_gethuman

(size:

int)

: units =

'kmgtp'

depth =

0while size >=10:

size = size //

1000

depth +=

1return

'{}{}'

.format

(size, units[depth]

)def

_listdir

(path,

all=

false

, detail=

false

, human=

false):

'''詳細列出目錄'''

p = path(path)

for i in p.iterdir():

ifnot

alland i.name.startswith(

'.')

:continue

ifnot detail:

yield

(i.name,

)else

: st = i.stat(

) mode = stat.filemode(st.st_mode)

atime = datetime.fromtimestamp(st.st_atime)

.strftime(

'%y-%m-%d %h:%m:%s'

) size =

str(st.st_size)

ifnot human else _gethuman(st.st_size)

yield

(mode, st.st_nlink, st.st_uid, st.st_gid, size, atime, i.name)

#排序yield

from

sorted

(_listdir(path,

all, detail, human)

, key=

lambda x: x[

len(x)-1

])if __name__ ==

'__main__'

: args = parser.parse_args(

)#分析引數,傳入可迭代的引數

print

(args)

parser.print_help(

) files = listdir(args.path, args.

all, args.

long

, args.human_readable)

print

(list

(files)

)

測試:python ***.py -lah

以上**小結:

建立parser=argumentparser( )物件

新增引數add_argument( )

自定義功能函式func( )

args = parser.parse_args( )

呼叫函式func(args)

Python 中argparse模組的使用

閱讀原文 python解析命令列讀取引數有兩種方式 sys.argv和argparse 如果指令碼很簡單或臨時使用,沒有多個複雜的引數選項,可以直接利用sys.argv將指令碼後的引數依次讀取 讀進來的預設是字串格式 import sys print 輸入的引數為 s sys.argv 1 命令列執...

Python 中argparse模組的使用

python解析命令列讀取引數有兩種方式 sys.ar 和argparse 如果指令碼很簡單或臨時使用,沒有多個複雜的引數選項,可以直接利用sys.ar 將指令碼後的引數依次讀取 讀進來的預設是字串格式 import sys print 輸入的引數為 s sys.ar 1 命令列執行效果 pytho...

python中argparse模組的使用

有兩個檔案乙個是 檔案1 sync shop source bimer.sh 檔案2 sync shop source bimer.py 在sync shop source bimer.sh 中呼叫sync shop source bimer.py 檔案1中產生的檔案要傳遞給檔案2 檔案1中的內容 ...