Mam kod działający na odczyt wartości pojedynczego pliku tekstowego, ale mam trudności z odczytaniem wszystkich plików ze wszystkich katalogów i ze złożeniem całej zawartości.Python: Czytanie wszystkich plików we wszystkich katalogach
Oto co mam:
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
wiadomości, że staram się trzymać w wieloznacznego * do nazwy pliku, jak również zamiennika dla filesuffix. Pojawia się następujący błąd:
„IOError: [ERRNO 2] Nie ma takiego pliku lub katalogu:« Test/»”
Nie jestem pewien, czy jest to jeszcze właściwy sposób to zrobić, ale wygląda na to, że jeśli w jakiś sposób uruchomię znaki kontrolne - to powinno działać.
Dostałem ten przykład do pracy: Python - reading files from directory file not found in subdirectory (which is there)
który jest trochę inaczej - ale nie wiem, jak zaktualizować go czytać wszystkie pliki. Myślę, że w tym pierwszym zestawie kodu:
previous_dir = os.getcwd()
os.chdir('testfilefolder')
#add something here?
for filename in os.listdir('.'):
Że muszę dodać coś gdzie mam zewnętrznej dla pętli, ale nie bardzo wiem, co umieścić w nim ..
Any myśli?
Dzięki dużo,
Brian
Dziękuję Martijn za to. Wypróbuję to i zobaczę co się stanie. Ciekawi mnie jednak, dlaczego tworzą dwie różne funkcje glob i os.walk. Na małym czytaniu widzę, że glob pozwoli ci używać symboli wieloznacznych, ale os.walk nie będzie - zamiast tego musisz filtrować wyniki. Nie rozumiem, co tak naprawdę się dzieje, kiedy myślę, że filtruję wyniki, które uważałem za takowe. Znalazłem ten wpis: http://stackoverflow.com/questions/8931099/quicker-to-os-walk-or-glob Jeśli masz jakiś wgląd i czas, wszelkie myśli są doceniane. – Relative0
'glob()' nie obsługuje arbitralnych zagnieżdżonych podkatalogów (jeszcze). To jedyna różnica tutaj. 'os.walk()', ale wymaga więcej filtrowania. Zauważ, że 'glob()' używa * tej samej metody filtrowania * (moduł 'fnmatch') już we własnej implementacji. –