я в настоящее время изучает argparse модуль и я хочу, чтобы моя программа ведет себя так:Использование argparse аргументы по-разному
$ python cldir.py # this should delete all .meta files in ~/downloads
$ python cldir.py -d /path/name/ # delete all .meta files in /path/name
$ python cldir.py -d /path/name -e txt # should delete all .txt files in /path/name
Теперь я знаю, что нужно использовать еще один аргумент для расширения файла (- e в этом случае), но я хотел бы знать, как я могу заставить переключатель -d вести себя, как показано выше.
Вот мой код до сих пор:
#!/usr/bin/env python
import argparse
import os
import glob
version = "0.1.1"
parser = argparse.ArgumentParser(
description = 'cldir: clear a directory from .meta and other unwanted files')
# arguments list
parser.add_argument('-v', '--version', action='version', version = version)
parser.add_argument('-d', '--direct', action = 'store_true')
args = parser.parse_args()
if args.direct == False:
path = os.environ['HOME'] + '/downloads/'
files = glob.glob(path + '*.meta')
if len(files) == 0:
print('No .meta files found in ~/downloads')
else:
for f in files:
os.remove(f)
print('%d file(s) deleted' %len(files))
else:
print(args.direct)
еще: печать (args.direct) только для тестирования, пока я не достичь желаемого поведения.
Любые другие замечания/предложения приветствуются, так как я новичок в python.
Да, default = meta будет делать дерево, я думаю, с некоторыми изменениями, спасибо! :) – yaku