你好我是python的新手并且已经阅读了文档并且遇到了argparse的问题
这里是我正在尝试的代码,请简单解释一个简单的头脑的人 提前谢谢
#!/usr/bin/env python
import argparse
from string import ascii_lowercase
from string import ascii_uppercase
from string import digits
from string import punctuation
def options():
parser = argparse.ArgumentParser(description="Create a list of characters")
parser.add_argument('-c:')
if (args.c):# == "-c:":
if "-c" + ":" + "caps":
charset = ascii_uppercase
elif "-c:" + "small":
charset = ascii_lowercase
elif "-c:" + "digits":
charset = digits
elif "-c:" + "punc":
charset = punctuation + " "
elif "-c:" + "space":
charset = " "
elif "-c:" + "all":
charset = ascii_lowercase + ascii_uppercase + digits + punctuation + space
else:
print("when using -c you must include an option! (caps, small, digits, punc, space, all)")
def filename():
filename = open('C:\\Users\\MSec\\Desktop\\WordLists\\'+sys.argv[1], 'w')
return
if __name__ == "__main__":
filename()
options()
再一次,我不太了解文档
我想虽然我有更好的(或更多pythonic)方式来编码所有选项而不是许多elif语句?
谢谢大家
答案 0 :(得分:0)
所有if语句都是真的。
if "-c" + ":" + "caps":
意味着
if "-c:caps":
字符串“-c:caps”是非假的。其余类似的if语句也是如此。
你可能意味着
if args.c == 'caps':
不,往往没有更好的方式,一长串的精灵。还有其他方法,但这是最容易编写和理解的,因此也是最好的。
但是,在这种情况下,您可以制作字典:
CHAR_OPTIONS = {'caps': ascii_uppercase,
'small': ascii_lowercase,
etc....
}
并像这样使用它:
charset = CHAR_OPTIONS[args.c]
答案 1 :(得分:0)
我不确定这是否是您要查找的内容,但您始终可以使用 .upper()
将字符串大写,将小写字符串使用 .lower()
。 :)