Forum >> Principianti >> Ricerca tra file txt in un folder

Pagina: 1 2 Avanti

Salve a tutti,

sono un neofita di Python , tuttavia sto cercando di risolvere il seguente problema :




1 Ho un folder dove risiedono n file txt

2 Aprire ciascun file : da cui estrarre una stringa

3 Creare un vettore con tutte le stringhe estratte dai file.




Il mio problema consiste nel capire come aprire tutti i file uno alla volta fino a scorrere tutto il folder , perché la ricerca di una stringa utilizzando un singolo file mi é chiara.




Grazie mille in anticipo per il vostro supporto.




Saluti

Gimbro





--- Ultima modifica di gimbro in data 2020-01-15 14:23:55 ---
os.listdir restituisce una lista con i nomi dei file di una directory. Puoi iterare su quella lista e aprire un file alla volta.
https://leanpub.com/capirewxpython : Capire wxPython, il mio libro
https://pythoninwindows.blogspot.com : Python in Windows, il mio blog e le mie guide
os.listdir restituisce una lista con i nomi dei file di una directory. Puoi iterare su quella lista e aprire un file alla volta.

Grazie per la tua risposta.





Ho provato ad implementare questo codice :




import os




FOLDER = 'C:\\Users\\GImbroci\AppData\\Local\\Programs\\Python\\Python38-32\\datibcm_10_12_19\\ODP_1035923'




file= os.listdir(FOLDER)




for file in file :

a = open('print(file)')

for line in a:

line = line.rstrip()

if not line.startswith('76'): continue

words = line.split(';')

print(words1)



Tuttavia mi da il seguente errore :





Traceback (most recent call last):

File "C:/Users/GImbroci/AppData/Local/Programs/Python/Python38-32/aperture_files_prova.py", line 9, in <module>

a = open('print(file)')

FileNotFoundError: [Errno 2] No such file or directory: 'print(file)'








Tuttavia se provo a stampare print (file ) mi da tutti i nomi dei file contenuti nella cartella .




Grazie mille in anticipo












"open(print(file))" non ha nessun significato in Python. Documentazione della funzione buil-in "open": https://docs.python.org/3/library/functions.html#open




https://leanpub.com/capirewxpython : Capire wxPython, il mio libro
https://pythoninwindows.blogspot.com : Python in Windows, il mio blog e le mie guide
"open(print(file))" non ha nessun significato in Python. Documentazione della funzione buil-in "open": https://docs.python.org/3/library/functions.html#open





Grazie per la tua risposta , ma sono ancora un pò in alto mare. Ho capito che os.listdir() mi da un vettore con tutti i nomi dei file contenuti nella cartella , però faccio ancora fatica a capire perchè quando passo un elemento del vettore f = os.listdir(FOLDER) , per esempio f1, al metodo open(f1) , mi dice che il mome del file di testo che voglio aprire non é un file o una directory . Mi potresti aiutare a capire dove sbaglio?

Grazie mille per il tuo tempo.
"open(print(file))" non ha nessun significato in Python. Documentazione della funzione buil-in "open": https://docs.python.org/3/library/functions.html#open





Ciao Ho capito quale era il problema che lavoravo nella directory di Python piuttosto quella del mio folder.
Grazie per la dritta adesso funziona tutto .



Se funziona usando "open(print(file))" stai usando un altro linguaggio di programmazione che non cononsco e che per combinazione si chiama Python anche quello.


Però sì, magari eri *anche* nella dir sbagliata.

https://leanpub.com/capirewxpython : Capire wxPython, il mio libro
https://pythoninwindows.blogspot.com : Python in Windows, il mio blog e le mie guide
Se funziona usando "open(print(file))" stai usando un altro linguaggio di programmazione che non cononsco e che per combinazione si chiama Python anche quello.


Però sì, magari eri *anche* nella dir sbagliata.


#cambio directory
import os

os.chdir("C:\\Users\\GImbroci\AppData\\Local\\Programs\\Python\\Python38-32\\datibcm_10_12_19\\ODP_1035923")
print( "directory changed")

folder = os.listdir("C:\\Users\\GImbroci\AppData\\Local\\Programs\\Python\\Python38-32\\datibcm_10_12_19\\ODP_1035923")

for folder in folder:

    b = open(folder)


    for line in b:
        line = line.rstrip()
        if not line.startswith('76'): continue
        words = line.split(';')
        print(words[1])

--- Ultima modifica di ㎝ in data 2020-01-16 17:21:33 ---
Se funziona usando "open(print(file))" stai usando un altro linguaggio di programmazione che non cononsco e che per combinazione si chiama Python anche quello.


Però sì, magari eri *anche* nella dir sbagliata.


Ciao ,

ho notato che il metodo listdir() non mete i file in ordine secondo data di ultima modifica , hai qualche suggerimento nell'ordire i file secondo "data di ultima modifica"?




Grazie mille in anticipo
--- Ultima modifica di gimbro in data 2020-01-17 13:27:00 ---


Pagina: 1 2 Avanti



Esegui il login per scrivere una risposta.