Forum >> Programmazione Python >> Scripting >> Stampa elenco di una cartella.

Pagina: 1

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 ---
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.