2016-11-04 3 views
0

Zurzeit arbeitet mein Programm mit zwei Argumenten nach dem Programmnamen im Terminal.Wie wird eine benutzerdefinierte Hilfemeldung angezeigt, wenn nur 'Hilfe' in der Befehlszeile eingegeben wird?

heißt python myscript.py file1 file2 arbeitet

with open(sys.argv[1], 'r') as a, open(sys.argv[2], 'r') as b: 
    while True: 
     try: 
    #there are two while loops here, one for each file... 

Wie kann ich es ändern, so dass, wenn ich nur geben:

$python myprogram.py help 

eine Hilfemeldung (aus einer Textdatei die ich gemacht habe) erzeugt wird?

Gibt es eine sehr einfache Möglichkeit, dies zu tun?

+1

Vergleichen Sie 'sys.argv [1]' mit 'help' und zeigen Sie in diesem Fall Hilfe an, anstatt Ihren normalen Code auszuführen? – larsks

+1

Sicher, überprüfe, ob das erste Argument "Hilfe" ist und dann etwas drucken. –

+1

Ich würde vorschlagen, dass Sie [argparse] (https://docs.python.org/3/library/argparse.html) verwenden, es wird Ihnen das Leben im Umgang mit Argumenten erleichtern. –

Antwort

0

Sie müssen eine Überprüfung von sys.argv[1] durchführen und sehen, ob es "Hilfe" entspricht.

if sys.argv[1] == "help": 

In diesem Block drucken Sie dann Ihre Hilfedatei für den Benutzer aus.

if sys.argv[1] == "help": 
    with open("help_readme.txt", "r") as f: 
     print(f.read()) 

Wenn sys.argv[1] nicht gleich "help", mit Ihrer aktuellen Logik weiter.


Eine Alternative ist argparse zu verwenden. Es kann automatisch die „Hilfe“ für Sie generieren, wenn Sie -h

import argparse 

parser = argparse.ArgumentParser(description='Process some files.') 
parser.add_argument('file', nargs=2, help="List of two files to process") 

args = parser.parse_args() 

for f in args.file: 
    print(f) # This shows how to use the file name. You will want your logic here 

Mit diesem Pass, wenn Sie -h auf der Kommandozeile übergeben, erhalten Sie eine hilfreiche Nachricht wie folgt:

usage: test.py [-h] file file 

Process some files. 

positional arguments: 
    file  List of two files to process 

optional arguments: 
    -h, --help show this help message and exit 

Es wird Akzeptiere 2 Dateinamen. Wenn Sie etwas anderes als zwei Werte übergeben, wird eine entsprechende Antwort erzeugt.

Verwandte Themen