Pythonban több click. Option?
Van egy olyan parancsom, hogy "user".
Adtam neki két optiont, az egyik az ask, a másik a give.
Ez most így néz ki:
@click.command()
@click.option('--ask', type=click.Choice(['name','version']), default=False)
@click.option('--give', type=click.Choice(['myname']), default=False)
def user(ask, give):
if ask == 'name':
print('My name is Sykra.')
elif ask == 'version':
print('My version is 0.1.')
else:
print('What do you want?')
if give == 'myname':
print('WORKS')
Hogyan lehet azt megcsinálni, hogy külön-külön opcióként érzékelje őket?
Mármint hogy vagy úgy használom, hogy user --ask ASD, vagy úgy, hogy user --give ASD.
Azt nem teljesen értem mit szeretnél elérni vagy miben működik a mostani megoldásod másképp, de annyi érződik, hogy nem jól akarod használni ezt a dolgot és szemantikailag el vagy csúszva.
Az, hogy "user" az nem egy parancs, hanem egy erőforrás vagy entitás. A parancsok igék, nem pedig főnevek. "CreateUser", "AddUser", "GetUserDetails", ezek lehetnének parancsok.
Tovább görgetve az, hogy "ask" meg "give" pedig nem opciók, hanem parancsok. Opciók olyasmik lennének, hogy "name", "address", "password".
Ezekből fakadhat minden problémád.
Pontosítok picit.
Szóval van nekem alapból ez a user nevű "parancsom".
@click.command()
@click.option('--ask', type=click.Choice(['name','age']), default=False, help='HELP')
def user(ask):
if ask == 'name':
print('My name is Tom.')
elif ask == 'age':
print('My age 18.')
else:
print('What do you want?')
Ezt ugye úgy használom, hogy:
user --ask name. Erre kihozza a nevét.
user --ask age. Erre kihozza a korát.
Szeretnék egy olyat, hogy:
user --give name. Erre egy inputot adjon és be tudjam írni a nevem, amit utána ki ír, hogy " 'Hello, ' + x".
Így tisztább? Elég érdekesen fogalmaztam meg igen :D
TALÁLTAM KONKRÉT PÉLDÁT :O :D Szóval, mikor a shutdown ?-et írom be, oda azt írja, hogy:
Usage: shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] SATÖBBI
És hogy látod hogy a /i /l /s stb, mind más-más funkciót hívnak elő DE ugyan úgy egy tömbben vannak és működik.
Továbbra is csak azt tudom mondani, amit már írtam.
Szemantikailag helytelen, amit csinálni akarsz, ezért nem sikerül egyszerűen megoldanod.
A "give" és az "ask" nem opciók, nem tudod őket ÉRTELMESEN opciókként kezelni.
Feltételezem erről a Python-csomagról van szó:
ez egy paracssoros interfészek létrehozására alkalmas könyvtár (mint a beépített argparse: [link] )
Ha jól értelmezem, azt szeretnéd, hogy legyen egy:
* -- give parancssori kapcsolód, aminek megadhatod a nevedet, és köszönt; illetve egy
* --ask parancssori kapcsolód, ami visszaadja a program nevét és "korát" (vagy ha nem kap semmit)
Itt egy példa a kivitelezésre:
eddig tartott az örömöm xd
"PS C:\Users\me\Desktop\CMD> user --give
Error: --give option requires an argument
PS C:\Users\me\Desktop\CMD> user --give name
Usage: user [OPTIONS]
Try "user --help" for help.
Error: Invalid value for "--ask": invalid choice: False. (choose from name, age)"
Ezzazzzzz ^_^
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!