Fedora Online Forum

Il forum della comunità italiana di Fedora

#1 09-02-2014 18:34:01

romulus
Pinguino avanzato
Da Roma
Registrato: 25-06-2010
Messaggi: 330

[Risolto] Python: getopt come funziona?

Mi sto divertendo un po con python (per ora molto cpioa e incolla)
ma getopt mi sta... massacrando.

fa sparire il valore dell'ultimo parametro.

questo è il codice:

#!/usr/bin/python

import os
import sys
import getopt
import xlrd
import csv

xlsfile = ""
csvfile = ""
qiffile = ""

#
# Usage function
#
def usage():
    print "Usage: " + sys.argv[0] + " -x Excel file [-c csv file] [-q qif file]"
    print "    or " + sys.argv[0] + " -c csv file [-q qif file]"

if len(sys.argv) < 2:
    usage()
    sys.exit(-1)

try:
    options, args = getopt.getopt(sys.argv[1:], "x:c:q")
except getopt.GetoptError:
    usage()
    sys.exit(-1)

for o, a in options:
    print o
    if o == '-x':
	print a
        xlsfile = a
    elif o in ("-c"):
	print a
        csvfile = a
    elif o in ("-q"):
	print a
	qiffile = a

print "xlsfile: " + xlsfile
print "csvfile: " + csvfile
print "qiffile: " + qiffile

se lo eseguo:

./prova -x xf -c cf -q qf
-x
xf
-c
cf
-q

xlsfile: xf
csvfile: cf
qiffile:  

Qualche dritta?

R.

Ultima modifica di romulus (11-02-2014 13:53:21)


Assioma di R.: Ci sono più bit in un byte di quanti tu ne riesca a contare.
Avatar by manuoceane from Tux Factory

Non in linea

#2 10-02-2014 13:18:44

bebo_sudo
Collaboratore
Da Trento+Trieste
Registrato: 28-02-2011
Messaggi: 1'845
Sito web

Re: [Risolto] Python: getopt come funziona?

ciao romulus.
Sto studiando anch'io python a tempo mooolto perso, e non sono ancora arrivato a getopt, però un mio amico mi ha consigliato un forum di utenti python molto ben gestito.

www.python-it.org/forum/
Ti consiglio di chiedere lì, molto probabilmente riceverai maggiori risposte.

Non in linea

#3 10-02-2014 20:44:25

fenomeno
Innamorato del forum
Registrato: 14-05-2010
Messaggi: 564
Sito web

Re: [Risolto] Python: getopt come funziona?

Hai dimenticato un : nella stringa di getopt. Il carattere : significa che c'è un parametro associato a quella opzione, non è un separatore di opzioni. La tua stringa dice che x e c accettano un parametro, mentre q non ha parametri. Ti basta mettere usare "x:c:q:" al posto di "x:c:q". Lo trovi scritto anche nella documentazione python circa getopt

Non in linea

#4 11-02-2014 13:52:54

romulus
Pinguino avanzato
Da Roma
Registrato: 25-06-2010
Messaggi: 330

Re: [Risolto] Python: getopt come funziona?

fenomeno ha scritto:

Hai dimenticato un : nella stringa di getopt. ...

Memoria corta + tastiera sporca  :wall:  :wall:  :wall:  :wall:

:clap:  :beer:

R.


Assioma di R.: Ci sono più bit in un byte di quanti tu ne riesca a contare.
Avatar by manuoceane from Tux Factory

Non in linea

#5 27-06-2014 15:45:37

wno
Appena sbarcato sul forum
Registrato: 04-11-2013
Messaggi: 23

Re: [Risolto] Python: getopt come funziona?

scusate se mi intrometto nel post con un altro argomento ma per mettere in fedora il path assoluto per python basta mettere nelle prime righe del codice :

#!/usr/bin/python

perché non mi funziona mi sembra solo un commento..

Non in linea

#6 27-06-2014 15:59:26

idraulico
Pinguino avanzato
Registrato: 18-11-2009
Messaggi: 308

Re: [Risolto] Python: getopt come funziona?

sì va bene oppure
#!/usr/bin/env python
io metto sempre anche in cima:
# -*- coding: latin-1 *-*
# -*- coding: cp1252 -*-
Ciao

Non in linea

#7 30-06-2014 09:10:59

wno
Appena sbarcato sul forum
Registrato: 04-11-2013
Messaggi: 23

Re: [Risolto] Python: getopt come funziona?

grazie, ma ho notato che questo serve per vedere i file come se fossero di python e non per impostare una path assoluta per eseguire i file senza digitare:

 $python nomefile

stavo cercando un comando che abilitasse gli script di python come se fossero degli eseguibili in linux..

ad esempio se ho il file home/wno/Documenti/fileinpython/script.py non vorei digitare $python nomefile ma solo script.py

Non in linea

#8 30-06-2014 09:52:41

marcomotta
Moderatore
Da Roma
Registrato: 18-01-2009
Messaggi: 2'798
Sito web

Re: [Risolto] Python: getopt come funziona?

#!/usr/bin/env python

in testa al file;

chmod +x /path/nomeFile.py

per renderlo eseguibile;

se vuoi anche evitare di digitare il path metti il file nella cartella bin che si trova nella tua home (se non esiste già crea la cartella), o in /usr/bin se deve essere accessibile a tutti gli utenti.

Ultima modifica di marcomotta (30-06-2014 09:53:41)


La filosofia è una disciplina con obiettivi, ma senza regole. La matematica è una disciplina con regole, ma senza obiettivi.
Un giorno ho incontrato un uomo che non aveva né obiettivi né regole. Studiava filosofia della matematica.

Non in linea

#9 01-07-2014 10:35:10

wno
Appena sbarcato sul forum
Registrato: 04-11-2013
Messaggi: 23

Re: [Risolto] Python: getopt come funziona?

grazie!

Non in linea

Piè di pagina