Discussion:
[Python] Hvordan får man fat i kommandolinjparametre?
(for gammel til at besvare)
Bertel Lund Hansen
2010-10-01 09:55:33 UTC
Permalink
Hej alle

Er der nogen der ved hvordan man i Python får fat i
kommandolinjparametrene?

Jeg kan fint printe argv[0], men argv[1] giver en fejl. Så slår
jeg op imanualen, og der står der at jeg skal bruge fileinput -
fileinput? Det er ikke filer jeg angiver, og jeg kan ikke få
noget fileinput til at virke.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Anders Wegge Keller
2010-10-01 15:41:51 UTC
Permalink
Post by Bertel Lund Hansen
Hej alle
Er der nogen der ved hvordan man i Python får fat i
kommandolinjparametrene?
Jeg kan fint printe argv[0], men argv[1] giver en fejl. Så slår
jeg op imanualen, og der står der at jeg skal bruge fileinput -
fileinput? Det er ikke filer jeg angiver, og jeg kan ikke få
noget fileinput til at virke.
Det følgende fragment virker fint i et af mine egne hjemmestrikkede scripts:

for a in sys.argv:
if a.startswith('--report:'):
wd.Report = int(a[9:])
if a.startswith('--file:'):
filename = a[7:]
if a.startswith('--debug:'):
debug = int(a[8:])
DBG (0, u'Debug level: %d' % debug)

Det er næppe den mest elegante måde at gøre det på, men det virker :)
--
/Wegge

Leder efter redundant peering af dk.*,linux.debian.*
Bertel Lund Hansen
2010-10-01 16:11:06 UTC
Permalink
Tak.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Bertel Lund Hansen
2010-10-01 16:24:40 UTC
Permalink
Det hjalp ikke. Så hentede jeg den seneste final version (2.6.6),
slettede den gamle og installerede den nye, og nu virker det som
det skal - også alle de tidligere mislykkede eksperimenter.

Jeg ved ikke om det var en bug i den gamle, men jeg tror det. Det
er ikke mange dage siden jeg reinstallerede den.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Adam Sjøgren
2010-10-02 13:11:09 UTC
Permalink
Post by Bertel Lund Hansen
Er der nogen der ved hvordan man i Python får fat i
kommandolinjparametrene?
Et bud på at håndtere parametre på en konsistent måde er getopt:

* http://docs.python.org/release/2.5.2/lib/module-getopt.html

Der er ikke meget mere irriterende end ikke-standard håndtering af
options.


Mvh.

Adam
--
"None of them kicks go boom Adam Sjøgren
None of them basslines fill the room" ***@koldfront.dk
Klaus Alexander Seistrup
2010-10-02 22:01:23 UTC
Permalink
Post by Bertel Lund Hansen
Er der nogen der ved hvordan man i Python får fat i
kommandolinjparametrene?
Jeg kan fint printe argv[0], men argv[1] giver en fejl.
Traditionelt bruger man arrayet sys.argv. Kan du give et konkret
exempel på hvordan det går galt?

Mvh,
--
Klaus Alexander Seistrup
http://klaus.seistrup.dk/
Bertel Lund Hansen
2010-10-03 06:43:06 UTC
Permalink
Post by Klaus Alexander Seistrup
Traditionelt bruger man arrayet sys.argv. Kan du give et konkret
exempel på hvordan det går galt?
Det gik galt fordi Python-systemet slet ikke modtog parametrene.
Da jeg ikke før har haft brug for kommandolinjeparametre i
Python, var situationen uvant.

Efter en opgradering til 2.6.6 kører det som det skal. Jeg
mistænker at det er en bug i min tidligere version, men jeg har
ikke forsket i det og vil heller ikke.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Klaus Alexander Seistrup
2010-10-03 06:54:38 UTC
Permalink
Post by Bertel Lund Hansen
Det gik galt fordi Python-systemet slet ikke modtog parametrene.
[…]
Jeg mistænker at det er en bug i min tidligere version, men […]
Det må det næsten ha' været. Men godt at du har fået det til at
fungere.

Mvh,
--
Klaus Alexander Seistrup
http://klaus.seistrup.dk/
Loading...