Beste Devvers,
Op dit moment ben ik een oud bash script aan het omschrijven in Python3. Het script wordt intern gebruikt om onze Video-server testmateriaal af te laten spelen.
Dit bash script ondersteunt de volgende argumenten :
Deze argumenten zijn mutually exclusive. Wat inhoudt dat je maar één van bovenstaande opties kunt meegeven aan het script.
De eerste twee vereisen ook nog een file argument, de overige argumenten niet.
Ik probeer dit middels Pythons argparse te bereiken, maar tot op heden geen soelaas.
Relevante Python 3 code:
Dit geeft het volgende resultaat:
Dat lijkt goed, maar schijn bedriegt, want stiekem verwacht hij nu ook bij list, stop, remove en who een argument.
Wanneer ik de dest niet opgeef voor de 4 argumenten krijg ik de volgende lijst:
Het lukt me niet om de argparse wijs te maken dat er bij de laatste 4 argumenten géén
Ik verwacht niet dat het veel uitmaakt, maar het script draait op een Ubuntu 16.04 machine met Python 3.5.2.
Wie kan me helpen
Matis
Op dit moment ben ik een oud bash script aan het omschrijven in Python3. Het script wordt intern gebruikt om onze Video-server testmateriaal af te laten spelen.
Dit bash script ondersteunt de volgende argumenten :
-play file -rec file -list -stop -remove -who
Deze argumenten zijn mutually exclusive. Wat inhoudt dat je maar één van bovenstaande opties kunt meegeven aan het script.
De eerste twee vereisen ook nog een file argument, de overige argumenten niet.
Ik probeer dit middels Pythons argparse te bereiken, maar tot op heden geen soelaas.
Relevante Python 3 code:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
| def parse_arguments(): parser = argparse.ArgumentParser() action_group = parser.add_mutually_exclusive_group(required=True) action_group.add_argument('-play', dest='file') action_group.add_argument('-rec', dest='file') action_group.add_argument('-list', dest='') action_group.add_argument('-stop', dest='') action_group.add_argument('-remove', dest='') action_group.add_argument('-who', dest='') args = parser.parse_args() return args |
Dit geeft het volgende resultaat:
usage: video.py [-h] (-play FILE | -rec FILE | -list | -stop | -remove | -who ) video.py: error: one of the arguments -play -rec -list -stop -remove -who is required
Dat lijkt goed, maar schijn bedriegt, want stiekem verwacht hij nu ook bij list, stop, remove en who een argument.
Wanneer ik de dest niet opgeef voor de 4 argumenten krijg ik de volgende lijst:
usage: video.py [-h] (-play FILE | -rec FILE | -list LIST | -stop STOP | -remove REMOVE | -who WHO) video.py: error: one of the arguments -play -rec -list -stop -remove -who is required
Het lukt me niet om de argparse wijs te maken dat er bij de laatste 4 argumenten géén
Ik verwacht niet dat het veel uitmaakt, maar het script draait op een Ubuntu 16.04 machine met Python 3.5.2.
Wie kan me helpen
Matis
If money talks then I'm a mime
If time is money then I'm out of time