2012-03-23 10 views
0

ハローのpythonに新しいイムやドキュメント上で読んでされており、ここではargparse明確にしてください

とのトラブルを抱えていますが、私はシンプル志向の人のために、それはonsimple説明してください 感謝しようとしていますコードですこれでイムではなく、多くのELIFの駅のすべてのオプションをコーディングするためのより良い(以上ニシキヘビ)の方法があるが、事前に

#!/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() 

再びイム新しいdidntのはかなり

は私が推測する文書を理解しますテンション?

ありがとうございました

答えて

0

すべてのifステートメントは常にtrueです。

if "-c" + ":" + "caps": 

手段

if "-c:caps": 

文字列 "-c:キャップは" 非falseです。類似のif文の残りの部分についても同様です。

おそらく

if args.c == 'caps': 

を意味そして、いや、elifsの長いリストそれは良い方法がしばしばありません。他の方法もありますが、これは最も簡単に書いて理解することができ、したがって最高です。

CHAR_OPTIONS = {'caps': ascii_uppercase, 
       'small': ascii_lowercase, 
       etc.... 
       } 

そしてそうのようにそれを使用する:この場合

、しかし、あなたは辞書作ることができます理にかなって

charset = CHAR_OPTIONS[args.c] 
+0

おかげしかし今では定義されていないグローバル名の引数を返しますが、もしdefオプションでそれがローカル変数となるように使われているのであれば? –

+0

@learn_What:いいえ、返さない "今"。私の例は、実際にparser.parse()を呼び出すことを忘れてしまいます。あなたがしなければならないことは、うまくいかないコードを書くのを止め、それを動作させようとすることです。代わりに一度に少しだけコードを書いて、その少しのコードを動作させてから、それを拡張してください。この時点で、最初からやり直して、一度に1,2行または3行のコードを書くようにして、これらの行が正しく動作することを確認してから、1行ずつビットを追加してください。それからあなたに問題があることを質問してください。 –

関連する問題