2017-04-14 4 views
0

Ich möchte alle Dateien aus einem Verzeichnis lesen und sowohl den Dateinamen als auch den Inhalt in eine Liste importieren. Ich habe den folgenden Code geschrieben, aber es importiert nur die letzte Datei im Verzeichnis.Dateien aus dem Verzeichnis öffnen und Dateinamen und Inhalt beibehalten

import os 

fileList = [] 

for dirname, dirnames, filenames in os.walk('.'): 
    for filename in filenames: 
     file = os.path.join(dirname, filename) 
    f = open(file, 'r') 
    contents = f.read() 
    newItem = (file, contents) 
    fileList.append(newItem) 


print(fileList) 
+0

Falls Sie sich fragen, dass Sie keine Antwort auf diese einfache Frage etwas früher bekommen haben: die 'Python-3.6 'tag sollte für Fragen verwendet werden, die spezifisch für Python Version 3.6 sind. Da diese Frage keine bestimmte Version von Python erfordert, können Sie das Tag 'python' hinzufügen. Es gibt viel mehr Leute, die Fragen folgen, die mit 'python' als mit' python-3.6' markiert sind – Felix

Antwort

0

Scheint ein Problem mit der Einrückung sein. Versuchen Sie dies:

import os 

fileList = [] 

for dirname, dirnames, filenames in os.walk('.'): 
    for filename in filenames: 
     file = os.path.join(dirname, filename) 
     f = open(file, 'r') 
     contents = f.read() 
     newItem = (file, contents) 
     fileList.append(newItem) 

print(fileList) 

Darüber hinaus schließen Sie nicht die Dateien in Ihrem Programm, die nicht guten Stil ist. Es ist besser, eine so genannte Kontext-Manager zu verwenden, um die Datei zu öffnen und zu schließen Griffe:

import os 

fileList = [] 

for dirname, dirnames, filenames in os.walk('.'): 
    for filename in filenames: 
     file = os.path.join(dirname, filename) 
     with open(file, 'r') as f: 
      contents = f.read() 
      newItem = (file, contents) 
      fileList.append(newItem) 

print(fileList) 
Verwandte Themen