/ / python pusty argument - python, argumenty, przekazywanie parametrów

pusty argument python - python, argumenty, przekazywanie parametrów

jak mogę wydrukować informacje pomocy, jeśli nie podano żadnych argumentów do skryptu Pythona?

#!/usr/bin/env python

import sys

for arg in sys.argv:
if arg == "do":
do this
if arg == ""
print "usage is bla bla bla"

czego mi brakuje if arg == "" linia, której nie umiem wyrazić :(

Odpowiedzi:

21 dla odpowiedzi № 1
if len(sys.argv) == 1:
# Print usage...

Pierwszym elementem sys.argv jest zawsze sama nazwa skryptu lub pusty ciąg. Jeśli sys.argv ma tylko jeden element, to nie może być żadnych argumentów.

http://docs.python.org/library/sys.html#sys.argv


11 dla odpowiedzi nr 2
if len(sys.argv)<2:

Nazwa programu jest zawsze w sys.argv [0]


5 dla odpowiedzi nr 3

Jak powiedzieli inni, możesz sprawdzić, czy jakikolwiek argument został przekazany przez:

#!/usr/bin/env python

import sys
args = sys.argv[1:]

if args:
for arg in args:
if arg == "do":
# do this
else:
print "usage is bla bla bla"

Istnieje jednak moduł Python OptParse który został opracowany specjalnie dla polecenia parsowaniaargumenty linii podczas uruchamiania skryptu. Proponuję przyjrzeć się temu, ponieważ jest to nieco bardziej „zgodne ze standardami” (tak jak w przypadku, jest to oczekiwana i akceptowana metoda analizowania wiersza poleceń w społeczności Pythona).


4 dla odpowiedzi № 4

Poniżej znajduje się bardzo Pythoniczny sposób rozwiązania problemu, ponieważ celowo generuje wyjątek w ramach try.

import sys

try:
sys.argv[1:] // do something with sys.argv[1:]
except IndexError:
print "usage is..."
sys.exit()

1 dla odpowiedzi nr 5
#!/usr/bin/env python

import sys
args = sys.argv[1:]

if args:
for arg in args:
if arg == "do":
# do this
else:
print "usage is bla bla bla"

1 dla odpowiedzi № 6

Na podstawie odpowiedzi Noctis Skytower

import sys
args = sys.argv[1:]

for arg in args:
if arg == "do":
# do this

if not args:
print "usage is bla bla bla"

1 dla odpowiedzi № 7

Polecam używanie lib optparse [1], jest bardziej elegancki: D

[1] Bardziej wydajny parser opcji wiersza poleceń < http://docs.python.org/library/optparse.html >


0 dla odpowiedzi № 8
import argparse

def parse_args():
parser = argparse.ArgumentParser(
add_help=True,
)

# your arguments here

if len(sys.argv) == 1:
parser.print_help()
sys.exit(0)
else:
options = parser.parse_args()

return options