Re: [Python] "chiudere" un file CSV
Eureka. Alla fine ci sono riuscito grazie ai vostri consigli. Per chi servisse, se si apre un CSV, come ha detto Fabrizio, prima cosa aprire un handler, manipolarlo e infine chiuderlo. All'occorrenza cancellare l'handler una volta chiuso. Grazie, Vittorio Il giorno 10 giugno 2010 11.49, Fabrizio Mancini ha scritto: > 2010/6/10 Vittorio Zuccala' : > > Mi sa che l'unica è come ha detto Fabrizio di lanciare un altro script > > completamente differente di modo che terminando il primo script, > l'handler > > perda visibilità. > > Devo ancora tentare questa strada perchè mi infastidisce molto non > riuscire > > a fare tutto con un unico script... > Ciao, > puoi anche provare a cancellare la variabile, con un semplice > del self.csvfile > in modo da far perdere visibilità alla variabile, non è molto > ortodosso, ma prova. > ciao Fabrizio > ___ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] "chiudere" un file CSV
2010/6/10 Vittorio Zuccala' : > Mi sa che l'unica è come ha detto Fabrizio di lanciare un altro script > completamente differente di modo che terminando il primo script, l'handler > perda visibilità. > Devo ancora tentare questa strada perchè mi infastidisce molto non riuscire > a fare tutto con un unico script... Ciao, puoi anche provare a cancellare la variabile, con un semplice del self.csvfile in modo da far perdere visibilità alla variabile, non è molto ortodosso, ma prova. ciao Fabrizio ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] "chiudere" un file CSV
Buongiorno, si utilizzo windows. Per quanto riguarda i permessi ne ho a sufficienza. Lo script infatti crea circa 52 CSV e soltanto 3 non riesce a cancellarne alla fine. Ho anche modificato, su suggerimento di alcuni, lo script "chiudendo" il file in questo modo: *self.csvfile = open(dati['file'],'r')* *self.__reader = csv.reader(self.csvfile, ";") . # VARIE AZIONI. self.csvfile.close()* A quel punto, andando avanti con lo script: *#CREO UN FILE ZIP e faccio il backup dei CSV str = "backup/backup.zip" file = zipfile.ZipFile(str, "w") for name in glob.glob("*.csv"): file.write(name, os.path.basename(name), zipfile.ZIP_DEFLATED) file.close() #CANCELLO I CSV APPENA COMPATTATI file = zipfile.ZipFile(str, "r") for info in file.infolist(): os.remove(info.filename) **file.close()* * * Tuttavia l'errore permane. *os.remove(info.filename) Error: [Errno 13] Permission denied: 'nome file.csv*' Mi sa che l'unica è come ha detto Fabrizio di lanciare un altro script completamente differente di modo che terminando il primo script, l'handler perda visibilità. Devo ancora tentare questa strada perchè mi infastidisce molto non riuscire a fare tutto con un unico script... Il giorno 10 giugno 2010 00.17, andreatagliol...@gmail.com < andreatagliol...@gmail.com> ha scritto: > Ciao, scusa la stupida domanda, ma sei sicuro di avere i permessi > sufficienti per eliminare il file csv? > Non è che lanci lo script con sudo o da root, oppure crei i .csv da root e > poi li elimini da utente normale? > Perchè l'errore dice proprio questo. > Credo che tu usi Windows ( l'ho intuito dal fatto che hai usato os.remove() > invece che os.sytem("rm file.csv"). > Io proverei con un try Execept e vedi se ti funziona. > Ciao > -- > Andrea Tagliolini > ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] "chiudere" un file CSV
In data venerdì 04 giugno 2010 10:31:33, Vittorio Zuccala' ha scritto: > Buongiorno a tutti, > in un programma che sto creando, vengono generati una quindicina di files > CSV. > Questi vengono aperti uno per uno, elaborati e quindi zippati all'interno > di un archivio di backup e infine cancellati. > Il problema avviene quando provo a cancellare l'ultimo file creato ( con il > comando *os.remove(info.filename)*). > L'errore che ottengo è: > > OSError: [Errno 13] Permission denied: 'nomefile.csv' > > Come posso "chiudere" l'accesso al file CSV senza aprire una nuova istanza? Probabilmente non ho capito bene... ma non è ce devi semplicemente chiudere il file prima di cancellarlo? -- Danielewww.fugamatematica.blogspot.com giusto! _o) (o_ (o_ _o) nel verso -./\\ //\.- //\ /\\ forse è perché non guardiamo le cose _\_V V_/_ V_/ \_V Quando non ci capiamo, ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] "chiudere" un file CSV
Ciao, scusa la stupida domanda, ma sei sicuro di avere i permessi sufficienti per eliminare il file csv? Non è che lanci lo script con sudo o da root, oppure crei i .csv da root e poi li elimini da utente normale? Perchè l'errore dice proprio questo. Credo che tu usi Windows ( l'ho intuito dal fatto che hai usato os.remove() invece che os.sytem("rm file.csv"). Io proverei con un try Execept e vedi se ti funziona. Ciao Il giorno 04 giugno 2010 10.48, Vittorio Zuccala' < vittorio.zucc...@gmail.com> ha scritto: > Esattamente: in un unico file python. > La creazione avviene con il lancio di un applicativo esterno: > > *stringa='clemb -stream AnalisiPortafoglioAgente.str -Pagente=%s -execute > -log agente.log' % agente['codiceAgente'] > os.system(stringa) > * > > mentre la compattazione: > *str = "backup/backup %s.zip" % config['englishtoday'] > file = zipfile.ZipFile(str, "w") > > for name in glob.glob("*.csv"): > file.write(name, os.path.basename(name), zipfile.ZIP_DEFLATED) > * > > Se, prevedendo la tua risposta, pensi che sia meglio fare le due operazioni > con due script separati... posso lanciare il secondo script (della > compressione) dal primo con os.system(secondoscript) o c'è altro modo? > > > Il giorno 04 giugno 2010 10.44, Paolo Bernardi ha > scritto: > > Come crei questi file? E le operazioni di compressione? Tutto mediante >> un unico script Python? >> >> Paolo >> >> On Fri, 2010-06-04 at 10:31 +0200, Vittorio Zuccala' wrote: >> > in un programma che sto creando, vengono generati una quindicina di >> > files CSV. >> > Questi vengono aperti uno per uno, elaborati e quindi zippati >> > all'interno di un archivio di backup e infine cancellati. >> > Il problema avviene quando provo a cancellare l'ultimo file creato >> > ( con il comando os.remove(info.filename)). >> > L'errore che ottengo è: >> > >> > OSError: [Errno 13] Permission denied: 'nomefile.csv' >> > >> > >> > Come posso "chiudere" l'accesso al file CSV senza aprire una nuova >> > istanza? >> > > > ___ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > > -- Andrea Tagliolini ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] "chiudere" un file CSV
2010/6/4 Vittorio Zuccala' : > Buongiorno a tutti, > in un programma che sto creando, vengono generati una quindicina di files > CSV. > Questi vengono aperti uno per uno, elaborati e quindi zippati all'interno di > un archivio di backup e infine cancellati. > Il problema avviene quando provo a cancellare l'ultimo file creato ( con il > comando os.remove(info.filename)). > L'errore che ottengo è: > > OSError: [Errno 13] Permission denied: 'nomefile.csv' > > Come posso "chiudere" l'accesso al file CSV senza aprire una nuova istanza? Ciao, il modulo csv prende in ingresso un file handler che tu apri, oppure se ne crea uno in automatico. Per avere il maggiore controllo ti conviene creare un riferimento ad un oggetto file, passarlo al modulo csv e quando hai finito chiudere il file handler. Altrimenti il modulo csv se se lo crea in automatico dovrebbe chiuderlo quando la variabile che referenzia l'handler csv esce dallo scopo e perde di visibilità. ciao fabrizio ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] "chiudere" un file CSV
Esattamente: in un unico file python. La creazione avviene con il lancio di un applicativo esterno: *stringa='clemb -stream AnalisiPortafoglioAgente.str -Pagente=%s -execute -log agente.log' % agente['codiceAgente'] os.system(stringa) * mentre la compattazione: *str = "backup/backup %s.zip" % config['englishtoday'] file = zipfile.ZipFile(str, "w") for name in glob.glob("*.csv"): file.write(name, os.path.basename(name), zipfile.ZIP_DEFLATED) * Se, prevedendo la tua risposta, pensi che sia meglio fare le due operazioni con due script separati... posso lanciare il secondo script (della compressione) dal primo con os.system(secondoscript) o c'è altro modo? Il giorno 04 giugno 2010 10.44, Paolo Bernardi ha scritto: > Come crei questi file? E le operazioni di compressione? Tutto mediante > un unico script Python? > > Paolo > > On Fri, 2010-06-04 at 10:31 +0200, Vittorio Zuccala' wrote: > > in un programma che sto creando, vengono generati una quindicina di > > files CSV. > > Questi vengono aperti uno per uno, elaborati e quindi zippati > > all'interno di un archivio di backup e infine cancellati. > > Il problema avviene quando provo a cancellare l'ultimo file creato > > ( con il comando os.remove(info.filename)). > > L'errore che ottengo è: > > > > OSError: [Errno 13] Permission denied: 'nomefile.csv' > > > > > > Come posso "chiudere" l'accesso al file CSV senza aprire una nuova > > istanza? > ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] "chiudere" un file CSV
Come crei questi file? E le operazioni di compressione? Tutto mediante un unico script Python? Paolo On Fri, 2010-06-04 at 10:31 +0200, Vittorio Zuccala' wrote: > in un programma che sto creando, vengono generati una quindicina di > files CSV. > Questi vengono aperti uno per uno, elaborati e quindi zippati > all'interno di un archivio di backup e infine cancellati. > Il problema avviene quando provo a cancellare l'ultimo file creato > ( con il comando os.remove(info.filename)). > L'errore che ottengo è: > > OSError: [Errno 13] Permission denied: 'nomefile.csv' > > > Come posso "chiudere" l'accesso al file CSV senza aprire una nuova > istanza? signature.asc Description: This is a digitally signed message part ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python