[Python] Gestione file

Daniele Varrazzo piro a develer.com
Lun 19 Mar 2007 16:27:06 CET


>> In questo secondo caso come faccio a
>> sapere da che posizione viene avviato uno script ?
>
> os.getcwd().
>
>> Ah Dimenticavo, lo script é compilato con Py2exe
>
> Non credo sia un problema par os.getcwd(): il concetto di posizione corrente
> esiste sempre.

mmm... dietrofront. Tu vuoi sapere dove lo script è salvato, non da dove
viene lanciato...

Allora sì, mi pare che con py2exe c'è una rognetta. Nei normali moduli
Python c'è la variabile __file__ che ti dice il nome del file, ma sotto
py2exe questa variabile non è disponibile.

Forse quando hai lo script sotto py2exe puoi leggere il nome dello script
con sys.argv[0].

Di sicuro nel primo caso, ma forse anche nel secondo, la directory che leggi
è relativa alla directory di esecuzione. Questo dovrebbe essere sufficiente,
ma se vuoi il percorso assoluto dovrai fare una cosa tipo:

  os.path.abspath(os.path.join(os.path.getcwd(), percorso_relativo))

Per distinguere tra un caso e l'altro mi sembra si guardi sys.frozen, che
dovrebbe essere presente solo quando sei sotto py2exe, quindi controlla:

if getattr(sys, 'frozen', None) is None:
    # sei frozen: guarda sys.argv[0]
else:
    # non sei frozen: guarda __file__

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com


Maggiori informazioni sulla lista Python