Forum
>>
Programmazione Python
>>
Scripting
>>
Stampa elenco di una cartella.
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da lucry23 |
2020-01-07 14:41:39 - Stampa elenco di una cartella.
|
ciao a tutti, sono nuova di questo forum, mi servirebbe una mano sul codice che ho scritto.
Dovrei stampare l'elenco dei file contenuti in una cartella. il codice che ho scritto è import os, sys fx = open("/content/drive/My Drive/elenco.csv","w") path="/content/drive/My Drive/file_dati" dirs = os.listdir( path ) for file in dirs: print (file, file=fx) print('fine') fx.close() Ciò mi stampa l'intero nome dei singoli file della cartella... Ma io avrei bisogno soltanto di una parte in quanto, solo una parte del nome di un file è diversa, esempio: 15_com.google_DatiMiei.json 15_com.facebook_DatiMiei.json 15_com.twitter_DatiMiei.json Mi servirebbe il modo di stampare su file solo: com.google com.facebook com.twitter grazie a tutti coloro che mi aiuteranno. --- Ultima modifica di lucry23 in data 2020-01-07 14:42:30 --- |
|
Scritto da Daniele aka Palmux |
2020-01-07 18:48:26 - Re: Stampa elenco di una cartella.
|
Ciao e benvenuta.
Prima di tutto quando posti il codice formattalo sempre in maniera consona, utilizzando il tasto code <> che trovi in alto durante l'inserimento, subito prima della tavolozza dei colori. Detto questo hai diversi modi di svolgere l'attività richiesta e solo tu sai come farlo, perché solo tu conosci i file che stai trattando. Potrebbe ridursi tutto nella ricerca degli underscore e da li una semplice operazione di slicing, ma non so se sono sempre e solo 2 ad esempio, fatto non da poco. Facciamo finta che lo siano, immaginando che s sia la stringa che contiene il testo: >>> s = "15_com.google_DatiMiei.json" >>> vl1, vl2 = [i for i,char in enumerate(s) if char == "_"] >>> s[vl1+1:vl2] com.google Ho usato una list comprehension, ma nulla ti vieta di esplicitare maggiormente il processo: >>> l =[] >>> for i,char in enumerate(s): ... if char == "_": ... l.append(i) >>> s[l[0]+1:l[1]] com.google Sentiti libera di scatenare la fantasia, perché sarebbe possibile essere ancora più sintetici: >>> from functools import reduce >>> reduce((lambda x, y: s[x+1:y]), [i for i,char in enumerate(s) if char == "_"]) 'com.google' Cya |
Pagina: 1
Esegui il login per scrivere una risposta.