Forum
>>
Principianti
>>
Aprire-elaborare e salvare file
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da sandrin81 |
2018-12-16 17:19:12 - Aprire-elaborare e salvare file
|
Ciao a tutti, sto cercando di scrivere un programma per fare una semplice operazione cioè aprire tutti i file di testo di una cartella, aggiungere incrementalmente un valore ad un campo (es: 0.64 al primo file poi + 0.64 al secondo per avere 1.28 e cosi via). Al momento sono riuscito a fare l'operazione su un unico file. Mi sono bloccato nella scrittura, col codice qui sotto scrivo una sola riga.
#define the paths in_path = "/Users/alessandro/Documents/Phyton/" out_path = "/Users/alessandro/Documents/Phyton/out/" #define start X x = 0.64 #define start X with a prompt #x = float(input("inserisci X: ")) #define header header = ("UNITS = m") #open file with open(in_path + "001file.txt") as file: for line in file: data = line.strip().split(" ") if (data0) == "UNITS": continue data1 = str(float(data1) + x) print(" ".join(data)) with open(out_path + "File1.txt", "a") as file: file.write(header + "\n") file.write(" ".join(data + "\n")) file.close() UNITS = m 1 0.000000000 0.000000000 0.00000000 198 0.000000000 16.00000000 0.00000000il risultato che vorrei per il primo file elaborato per ogni file della cartella (la colonna 1 e la 3 non sono fisse) - i successivi andranno ad incrementare 0.64 > 1.28 ecc ecc.. UNITS = m 1 0.640000000 0.000000000 0.00000000 198 0.640000000 16.00000000 0.00000000suggerimenti? lo so che è banale ma non ne sto venendo fuori.. grazie mille --- Ultima modifica di sandrin81 in data 2018-12-16 17:26:57 --- |
|
Scritto da F _ |
2018-12-16 23:56:59 - Re: Aprire-elaborare e salvare file
|
Direi che qui trovi la risposta per dare una lista dei files presenti nella cartella.
Poi con un FOR li fai passare ad uno ad uno ed eseguirai le operazioni che vorresti fare. >>> f= [] >>> for (dirpath, dirnames, filenames) in walk('./'): ... f.extend(filenames) ... break ... >>> fPer tanto in f ci saranno tutti i files della cartella ./ . Forse saranno da escludere quelli nascosti, che iniziano con il punto. |
|
Scritto da sandrin81 |
2018-12-17 10:07:51 - Re: Aprire-elaborare e salvare file
|
Grazie mille,
ho fatto un passo avanti, ora leggo i file nella directory, e ho dettato una variabile da usare per il come contatore per il ciclo for (che devo ancora scrivere) Non sto capendo ancora dove sbaglio quando voglio scrivere il file in output.. import os #define the paths in_path = "/Users/alessandro/Documents/Phyton/in/" out_path = "/Users/alessandro/Documents/Phyton/out/" #define start X x = 0.64 #define start X with a prompt #x = float(input("inserisci X: ")) #define header header = ("UNITS = m") #Read and sort the file files = ( next( os.walk(in_path) )2 ) files.sort() #Number of files in folder nr_file = len(files) #print(" ".join(files)) #open file with open(in_path + files0) as file: for line in file: data = line.strip().split(" ") if (data0) == "UNITS": continue data1 = str(float(data1) + x) print(" ".join(data)) #### problmema nell'output scrove una sola riga. #with open(out_path + files0, "a") as file: # file.write(header + "\n") #file.write(" ".join(data)) #file.close() |
|
Scritto da F _ |
2018-12-19 12:37:01 - Re: Aprire-elaborare e salvare file
|
La cosa che vuoi implementare a me risulta diversa:
>>> files = (next(os.walk('./'))) >>> print(len(files)) 3 >>> from os import walk >>> f= [] >>> for (dirpath, dirnames, filenames) in walk('./'): ... f.extend(filenames) ... break ... >>> len(f) 31Il tuo metodo mi torna una lista di liste. Non i nomi della cartella dove si inizia a fare il walk. Per ottenere il tuo risultato, di seguito potresti eseguire un FOR from os import path as Path for files in f: #open file with open(in_path + files) as file: for line in file: data = line.strip().split(" ") if (data) == "UNITS": continue data1 = str(float(data1) + x) print(" ".join(data)) file.close() #### 'a' apertura del file in modo append try out_file = out_path + files Path.exists(out_file) with open(out_file, "a") as file: # file.write(header + "\n") file.write(" ".join(data)) file.close() except #print('%s inesistente' %files) pass |
Pagina: 1
Esegui il login per scrivere una risposta.