Python lettura file e scrittura in cartella separata

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
sverdrup
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 607
Iscrizione: giovedì 15 giugno 2006, 12:51

Python lettura file e scrittura in cartella separata

Messaggio da sverdrup »

Ciao a tutti,
ho un problema, dovrei leggere tutti i file presenti in una cartella, riga per riga, eliminare le righe che cominciano con un determinato carattere e alla fine scrivere le righe "filtrate" all'interno di altrettanti file con estensione diversa, ma ho qualche problema....
1) non so proprio come fare per riscrivere i file cambiandogli estensione....
2)ho arrangiato uno scriptino che legge tutti i file in una cartella, ma mi sa che c'è qualche cosa che non va, il codice è il seguente:

Codice: Seleziona tutto

#!/usr/bin/env python
import os
path = '/home/alessandro/Scrivania/mediati' 
for dir_entry in os.listdir(path):
    dir_entry_path = os.path.join(path, dir_entry)
    if os.path.isfile(dir_entry_path):
        with open(dir_entry_path, 'r') as my_file:
	   for line in my_file:	
               if not line.startswith("#"):
                  if not line.startswith("*"):
			print my_file
Grazie a tutti in anticipo :birra:
"Not everything that counts can be counted, and not everything that can be counted counts."
Avatar utente
Claudio_F
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1463
Iscrizione: lunedì 28 maggio 2012, 18:49
Desktop: Mate/Gnome
Distribuzione: Ubu22.04

Re: Python lettura file e scrittura in cartella separata

Messaggio da Claudio_F »

Codice: Seleziona tutto

#!/usr/bin/env python
import os

PATH = '/home/alessandro/Scrivania/mediati'
NEW_PATH = '/home/alessandro/Scrivania/altro'
NEW_EXTENSION = '.zibibbo'

for dir_entry in os.listdir(PATH):
    dir_entry_path = os.path.join(PATH, dir_entry)
    if os.path.isfile(dir_entry_path):
        f_name, extension = os.path.splitext(dir_entry)
        new_path = os.path.join(NEW_PATH, f_name) + NEW_EXTENSION
        with open(dir_entry_path, 'r') as in_file:
            with open(new_path, 'w') as out_file:
                for line in in_file:   
                    if line[0] not in '#*':
                        out_file.write(line)
Avatar utente
sverdrup
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 607
Iscrizione: giovedì 15 giugno 2006, 12:51

Re: Python lettura file e scrittura in cartella separata

Messaggio da sverdrup »

Grazie mille funziona alla perfezione...
Adesso me lo studio e cerco di capire come funziona...
grazie ancora sei stato gentilissimo, hai una birra pagata al bar ;)
"Not everything that counts can be counted, and not everything that can be counted counts."
Avatar utente
Claudio_F
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1463
Iscrizione: lunedì 28 maggio 2012, 18:49
Desktop: Mate/Gnome
Distribuzione: Ubu22.04

Re: Python lettura file e scrittura in cartella separata

Messaggio da Claudio_F »

Ah... speravo che prima di lanciarlo lo controllassi :p Comunque se va meglio così :)
Il not in 'stringa' l'ho scritto solo perché è più veloce di startswith.
Il resto è solo la costruzione del nuovo path estraendo il nome del file senza estensione con os.path.splitext.
Avatar utente
sverdrup
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 607
Iscrizione: giovedì 15 giugno 2006, 12:51

Re: Python lettura file e scrittura in cartella separata

Messaggio da sverdrup »

SI lo avevo controllato prima, ma non lo avevo capito troppo bene :)
Adesso però sorge un nuovo problema...
i file che apro contengono una serie di valori, ed alla fine c'è sempre lo stesso valore, vorrei eliminare l'ultimo valore e salvare il file in csv, con un solo spazio tra i dati....
I dati contengono valori tipo questi:

Codice: Seleziona tutto

  7,13552    23,9401    37,1610  1025,3356      4,500   5,473802   208,7794      8,290     0,0129 0,0000e+00
    7,11692    24,0902    37,1702  1025,3319      5,000   5,479682   209,4313      8,291     0,0199 0,0000e+00
    7,11643    23,9917    37,1970  1025,3798      5,500   5,473323   209,5277      8,291     0,0164 0,0000e+00
    7,11939    23,9360    37,2132  1025,4082      6,000   5,469684   209,6115      8,291     0,0133 0,0000e+00
    7,12251    23,8875    37,2277  1025,4338      6,500   5,466325   209,6865      8,291     0,0102 0,0000e+00
    7,14485    23,7410    37,2750  1025,5183      7,000   5,454856   209,9125      8,291     0,0011 0,0000e+00
    7,20416    23,4837    37,3578  1025,6654      7,500   5,434639   210,2499      8,291     0,0162 0,0000e+00
e praticamente vorrei che nei nuovi file salvati in csv scomparisse il valore 0,0000e+0...
dimenticavo, inoltre avrei bisogno di sostituire tutte le virgole con un punto
come posso fare?
Grazie ancora
"Not everything that counts can be counted, and not everything that can be counted counts."
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Python lettura file e scrittura in cartella separata

Messaggio da crap0101 »

splitti la linea, tieni tutti gli elementi della lista creata tranne l'ultimo "joinandoli" con lo spazio... a quel punto sostituisci le virgole con punti

https://docs.python.org/2/library/stdty ... ng-methods
Spoiler
Mostra

Codice: Seleziona tutto

' '.join(line.split()[:-1]).replace(',','.')
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
Claudio_F
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1463
Iscrizione: lunedì 28 maggio 2012, 18:49
Desktop: Mate/Gnome
Distribuzione: Ubu22.04

Re: Python lettura file e scrittura in cartella separata

Messaggio da Claudio_F »

E va riaggiunto alla fine della riga il fineriga (os.linesep) che split aveva tolto.
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Python lettura file e scrittura in cartella separata

Messaggio da crap0101 »

basta '\n'
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti