[Python] Gestione file

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


> Ho fatto il seguente script in python per la rilevazione delle periferiche
> BT:
>
[...]

> Volevo avere un consiglio riguardo la struttura del codice dai voi guru del
> linguaggio in quanto sono 3 giorni che ho iniziato ad usarlo. Pongo ora due
> quesiti, dal promt di MS-DOS l'applicazione funziona, mi crea un file in
> "BluetoothCache\BluetoothDiscoverReport.ini". Avviandolo da un altro
> programma in VB6 mi dice invece che non riesce a creare INIFile. Ora volevo
> sapere, dipende dal fatto che ho usato \ al posto di / ?

Di sicuro questo è un errore. ti ha funzionato solo perché \B non è magico
quanto \n o \t. Puoi usare:

# i / funzionano anche sotto Windows
_reportfilename="BluetoothCache/BluetoothDiscoverReport.ini"

# usa gli escape... ma copiaeincolla diventano difficili
_reportfilename="BluetoothCache\\BluetoothDiscoverReport.ini"

# usa le raw string, ma ogni tanto rischi di dimenticarne una
_reportfilename=r"BluetoothCache\BluetoothDiscoverReport.ini"

# Questa è la soluzione più portabile
_reportfilename=os.path.join("BluetoothCache", "BluetoothDiscoverReport.ini")

> Oppure devo creare
> un percorso completo in quanto essendo lo script avviato da una posizione
> diversa rispetto a quella in cui é salvato non trova la cartella
> "BluetoothCache" e mi da un errore.

Questo è probabilmente il vero motivo per cui hai l'errore.

> 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.

Ciao!

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


Maggiori informazioni sulla lista Python