Kezdőoldal » Számítástechnika » Programozás » Pythonban több click. Option?

Pythonban több click. Option?

Figyelt kérdés

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.


2019. márc. 11. 23:58
 1/7 anonim ***** válasza:

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.

2019. márc. 12. 15:13
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:

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

2019. márc. 12. 16:23
 3/7 A kérdező kommentje:

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.

2019. márc. 12. 16:25
 4/7 anonim ***** válasza:

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.

2019. márc. 12. 18:04
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:

Feltételezem erről a Python-csomagról van szó:

[link]

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:

[link]

2019. márc. 12. 21:47
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:
Utolsó, te egy isten vagy:O Köszönöm szépen, gyönyörűen megírtad, teljesen áttekinthető és a kommentek miatt kezdőknek is értelmezhető :O Ment a +!!
2019. márc. 13. 16:14
 7/7 A kérdező kommentje:

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 ^_^

2019. márc. 13. 16:34

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!