[Python] trovare l' encoding di un file

2009-06-10 Thread Alessandro Dentella
Ciao,

  come faccio a trovare l'encoding di un file che sto eseguendo?  Il file
  comincia con::

 # coding: utf-8'

  dentro quel file è definita una stringa che devo passare come description
  a optparse.OptionParser(opt, description=...). Posso in questo caso
  usare::

unicode(..., encoding='utf-8'), ma vorrei fare una procedure lievemente 

  più generica prendendo l'encoding dal file stesso. E` possibile?

  sandro
  *:-)


PS: se importo pango, tutto funziona correttamente, anche senza forzare
l'encoding. 

-- 
Sandro Dentella  *:-)
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy
#!/usr/bin/python
# coding: utf-8

"""
Questo è un esempio di ciò che voglio
"""
#import pango
import optparse

p = optparse.OptionParser('', description=__doc__)
p.print_help()



___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trovare l' encoding di un file

2009-06-10 Thread Daniele Varrazzo
On Wed, 10 Jun 2009 11:28:53 +0200, Alessandro Dentella 
wrote:
> Ciao,
> 
>   come faccio a trovare l'encoding di un file che sto eseguendo?  Il file
>   comincia con::
> 
>  # coding: utf-8'
> 
>   dentro quel file è definita una stringa che devo passare come
>   description
>   a optparse.OptionParser(opt, description=...). Posso in questo caso
>   usare::
> 
> unicode(..., encoding='utf-8'), ma vorrei fare una procedure
lievemente
> 
>   più generica prendendo l'encoding dal file stesso. E` possibile?

Spero di aver capito bene la faccenda, non se sono sicuro.

Io credo che l'encoding del file serva solo a definire in che encoding sono
codificate le costanti unicode nei sorgenti. Perché usi esplicitamente il
costruttore unicode? Secondo me basta:

desc=u"àè€"
optparse.OptionParser(opt, description=desc)

(se poi però qualcuno ha la console impostata a latin1, non so se
"script.py --help" esploda o no: immagino dipenda da optparse, ma
probabilmente se la cava).

-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trovare l' encoding di un file

2009-06-10 Thread Lawrence Oluyede
2009/6/10 Alessandro Dentella :
> ma vorrei fare una procedure lievemente
>
>  piů generica prendendo l'encoding dal file stesso. E` possibile?


Puoi provare a usare Chardet: http://chardet.feedparser.org/

ciao!

-- 
Lawrence Oluyede
[eng] http://oluyede.org - http://twitter.com/lawrenceoluyede
[ita] http://neropercaso.it - http://twitter.com/rhymes
[flickr] http://www.flickr.com/photos/rhymes
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trovare l' encoding di un file

2009-06-10 Thread Marco Beri
2009/6/10 Alessandro Dentella 

> Ciao,
>  come faccio a trovare l'encoding di un file che sto eseguendo?  Il file
>  comincia con::
>
> # coding: utf-8'
>  dentro quel file č definita una stringa che devo passare come description
>  a optparse.OptionParser(opt, description=...). Posso in questo caso
>  usare::

   unicode(..., encoding='utf-8'), ma vorrei fare una procedure lievemente


Beh, a me da errore comunque cosi`. Io ho dovuto fare cosi`:
p = optparse.OptionParser('', description=unicode(__doc__, encoding='utf8',
errors='ignore'))


> piů generica prendendo l'encoding dal file stesso. E` possibile?


Ti confermo quello che ha detto Daniele, a me cosi` ha funzionato:

#!/usr/bin/python
# coding: utf-8

u"""
Questo è esempio di ciò voglio
"""
#import pango
import optparse

p = optparse.OptionParser('', description=__doc__)
p.print_help()

Ho aggiunto solo la "u" prima della docstring.
Ciao.
Marco.

-- 
http://thinkcode.tv - Prossimamente su questi schermi
http://beri.it - Blog di una testina di vitello
http://stacktrace.it - Aperiodico di resistenza informatica
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trovare l' encoding di un file

2009-06-10 Thread Alessandro Dentella
On Wed, Jun 10, 2009 at 11:50:10AM +0200, Daniele Varrazzo wrote:
> On Wed, 10 Jun 2009 11:28:53 +0200, Alessandro Dentella 
> wrote:
> > Ciao,
> > 
> >   come faccio a trovare l'encoding di un file che sto eseguendo?  Il file
> >   comincia con::
> > 
> >  # coding: utf-8'
> > 
> >   dentro quel file è definita una stringa che devo passare come
> >   description
> >   a optparse.OptionParser(opt, description=...). Posso in questo caso
> >   usare::
> > 
> > unicode(..., encoding='utf-8'), ma vorrei fare una procedure
> lievemente
> > 
> >   più generica prendendo l'encoding dal file stesso. E` possibile?
> 
> Spero di aver capito bene la faccenda, non se sono sicuro.
> 
> Io credo che l'encoding del file serva solo a definire in che encoding sono
> codificate le costanti unicode nei sorgenti. Perché usi esplicitamente il
> costruttore unicode? Secondo me basta:
> 
> desc=u"àè€"
> optparse.OptionParser(opt, description=desc)
> 

Effettivamente così funziona l'esempio, purtroppo nel caso reale mi solleva
altri problemi (che sembrano completamente scorrelati), per cui quando avevo
fatto la prova, vedendo l'errore avevo cortocircuitato il cervello. Fra
poco indago meglio cosa mi sta dicendo l'errore.

grazie
sandro
*:-)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trovare l' encoding di un file

2009-06-10 Thread Alessandro Dentella
> Effettivamente così funziona l'esempio, purtroppo nel caso reale mi solleva
> altri problemi (che sembrano completamente scorrelati), per cui quando avevo
> fatto la prova, vedendo l'errore avevo cortocircuitato il cervello. Fra
> poco indago meglio cosa mi sta dicendo l'errore.

trovato. 
Faccio un passo indietro. Sto aggiungendo la possibilità di scrivere un
testo descrittivo alla ricetta di Simionato 'optionparse' [1]. In quella
ricetta, le opzioni da passare al parser sono nella docstring, che viene
'parsata' con una regexp.

Se la docstring è unicode anche i 'pezzetti' passati a parse.add_options,
saranno unicode (alla riga 65):

   p.add_option(short.strip(),long.strip(),
 action = action, help = help.strip())

e questo non viene digerito da optparse.

Quindi avevo pensato di fare diventare unicode solo le help string e la
description, ma in effetti posso semplicemente fare ridiventare 'ascii' le
opzioni... vedo che vanno ugualmente bene str() ed .encode('ascii').


sandro
*:-)

[1] http://code.activestate.com/recipes/278844/
ps: allego la versione finale...

-- 
Sandro Dentella  *:-)
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy
# coding: utf-8
"""\
:Author: M. Simionato
:Date: April 2004
:Title: A much simplified interface to optparse.

You should use optionparse in your scripts as follows.
First, write a module level docstring containing something like this
(this is just an example):

'''usage: %prog files [options]
   -d, --delete: delete all files
   -e, --erase = ERASE: erase the given file'''
   
Then write a main program of this kind:

# sketch of a script to delete files
if __name__=='__main__':
import optionparse
option,args=optionparse.parse(__doc__)
if not args and not option: optionparse.exit()
elif option.delete: print "Delete all files"
elif option.erase: print "Delete the given file"

Notice that ``optionparse`` parses the docstring by looking at the
characters ",", ":", "=", "\\n", so be careful in using them. If
the docstring is not correctly formatted you will get a SyntaxError
or worse, the script will not work as expected.
"""

import optparse, re, sys

USAGE = re.compile(r'\s*(?P.*)\s*\s*usage: (?P.*?)(\n[ \t]*\n|$)',
   re.DOTALL|re.UNICODE|re.LOCALE)

def nonzero(self): # will become the nonzero method of optparse.Values   
"True if options were given"
for v in self.__dict__.itervalues():
if v is not None: return True
return False

optparse.Values.__nonzero__ = nonzero # dynamically fix optparse.Values

class ParsingError(Exception): pass

optionstring=""

def exit(msg=""):
raise SystemExit(msg or optionstring.replace("%prog",sys.argv[0]))

def parse(docstring, arglist=None):
global optionstring
optionstring = docstring
match = USAGE.search(optionstring)
if not match: raise ParsingError("Cannot find the option string")
optlines = match.group('usage').splitlines()
try:
descr = match.group('descr')
p = optparse.OptionParser(optlines[0], description=descr)
for line in optlines[1:]:
opt, help=line.split(':')[:2]
short,long=opt.split(',')[:2]
if '=' in opt:
action='store'
long=long.split('=')[0]
else:
action='store_true'

p.add_option(str(short.strip()),str(long.strip()),
 action = action, help = help.strip())
except (IndexError,ValueError):
raise ParsingError("Cannot parse the option string correctly")
return p.parse_args(arglist)


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] file nella directory

2009-06-10 Thread castor91
Qualcuno mi può fare un'esempio di script che data una directory (per
esempio:   C:\Programmi\plp) mi aggiunga ad una lista tutti i file presenti
all'interno di questa directory??
grazie ;)
-- 
castor91
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] file nella directory

2009-06-10 Thread Ernesto
> Qualcuno mi può fare un'esempio di script che data una directory  
> (per esempio:   C:\Programmi\plp) mi aggiunga ad una lista tutti i  
> file presenti all'interno di questa directory??
> grazie ;)

Potresti provare con:

import os
content=os.listdir("C:\Programmi\plp")

Ciao,

Ernesto
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] file nella directory

2009-06-10 Thread Marco Beri
2009/6/10 Ernesto 

> > Qualcuno mi può fare un'esempio di script che data una directory
> > (per esempio:   C:\Programmi\plp) mi aggiunga ad una lista tutti i
> > file presenti all'interno di questa directory??
> > grazie ;)
>
> Potresti provare con:
>
> import os
> content=os.listdir("C:\Programmi\plp")


Suggerirei:

import os
content=os.listdir("C:/Programmi/plp")

Ciao.
Marco.

-- 
http://thinkcode.tv - Prossimamente su questi schermi
http://beri.it - Blog di una testina di vitello
http://stacktrace.it - Aperiodico di resistenza informatica
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] file nella directory

2009-06-10 Thread Marco Mariani
castor91 wrote:

> Qualcuno mi può fare un'esempio di script che data una directory (per 
> esempio:   C:\Programmi\plp) mi aggiunga ad una lista tutti i file 
> presenti all'interno di questa directory??

os.listdir()


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] file nella directory

2009-06-10 Thread castor91
Qualcuno mi può fare un'esempio di script che data una directory (per
esempio:   C:\Programmi\plp) mi aggiunga ad una lista tutti i file presenti
all'interno di questa directory??
grazie ;)
-- 

-- 
castor91
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] file nella directory

2009-06-10 Thread Giovanni Marco Dall'Olio
2009/6/10 castor91 

> Qualcuno mi può fare un'esempio di script che data una directory (per
> esempio:   C:\Programmi\plp) mi aggiunga ad una lista tutti i file presenti
> all'interno di questa directory??


>>> import glob
>>> glob.glob('C:\programmi\plp\*')

rispetto a os.listdir, glob ti permette di fare file matching piu'
complicati, e.g. *.txt per ottenere tutti i file di testo nella directory.
- http://docs.python.org/library/glob.html


> grazie ;)
> --
> castor91
>
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>


-- 
Giovanni Dall'Olio, phd student
Department of Biologia Evolutiva at CEXS-UPF (Barcelona, Spain)

My blog on bioinformatics: http://bioinfoblog.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python