Ho il codice che funziona per leggere i valori di un singolo file di testo ma ho difficoltà a leggere tutti i file da tutte le directory e a mettere insieme tutti i contenuti.Python: lettura di tutti i file in tutte le directory
Ecco quello che ho:
filename = '*'
filesuffix = '*'
location = os.path.join('Test', filename + "." + filesuffix)
Document = filename
thedictionary = {}
with open(location) as f:
file_contents = f.read().lower().split(' ') # split line on spaces to make a list
for position, item in enumerate(file_contents):
if item in thedictionary:
thedictionary[item].append(position)
else:
thedictionary[item] = [position]
wordlist = (thedictionary, Document)
#print wordlist
#print thedictionary
nota che sto cercando di attaccare il carattere jolly * in per il nome del file, così come il carattere jolly per il filesuffix. Ottengo il seguente errore:
"IOError: [Errno 2] Nessun file o directory: 'Test/'"
Non sono sicuro se questo è anche il modo giusto per farlo, ma sembra che se riesco in qualche modo a far funzionare i caratteri jolly, dovrebbe funzionare.
ho ottenuto questo esempio funzioni: Python - reading files from directory file not found in subdirectory (which is there)
Che è un po 'diverso - ma non sanno come aggiornare per leggere tutti i file. Sto pensando che in questa prima serie di codice:
previous_dir = os.getcwd()
os.chdir('testfilefolder')
#add something here?
for filename in os.listdir('.'):
che avrei bisogno di aggiungere qualcosa in cui ho un ciclo for esterno, ma non so bene cosa mettere in esso ..
Qualsiasi pensieri?
Grazie molto,
Brian
Grazie Martijn per questo. Lo proverò e vedrò cosa succede. Sono curioso di sapere come perché fanno due diverse funzioni glob e os.walk. In una piccola lettura vedo che glob ti permetterà di usare i caratteri jolly, ma os.walk non lo farà - invece devi filtrare i risultati. Non capisco cosa stia succedendo realmente quando penso che filtri i risultati che ho pensato siano le espressioni jolly. Ho trovato questo post: http://stackoverflow.com/questions/8931099/quicker-to-os-walk-or-glob Se avete qualche intuizione e tempo, qualsiasi pensiero è apprezzato. – Relative0
'glob()' non supporta subdirectory annidate arbitrariamente (ancora). Questa è l'unica differenza qui. 'os.walk()' richiede ma richiede più filtri. Si noti che 'glob()' usa lo * stesso metodo di filtro * (il modulo 'fnmatch') già nella sua implementazione. –