2016-04-06 12 views
0

Ich versuche, alle Excel-Dateien aus dem Verzeichnis zu lesen (vor allem Test_File.xlsx). Der Code funktioniert, wenn ich nur die Dateien auf dem Terminal sehen möchte, aber es gibt einen Fehler (Traceback), wenn ich versuche, alle TEST_Files.xlsx in eine Test4.xlsx anhängen.Lesen mehrerer Excel-Dateien aus dem Verzeichnis - Python-Code funktioniert nicht

Fehlermeldung:

File "Excel_Script3.py", line 16, in <module> 
    data = pd.read_excel(filename, 'Sheet1') 
    File "/Users/ItsMyFuckingSystem/miniconda3/lib/python3.5/site-packages/pandas/io/exce‌​l.py", line 163, in read_excel 
    io = ExcelFile(io, engine=engine) 
    File "/Users/ItsMyFuckingSystem/miniconda3/lib/python3.5/site-packages/pandas/io/exce‌​l.py", line 206, in init 
    self.book = xlrd.open_workbook(io) 
    File "/Users/ItsMyFuckingSystem/miniconda3/lib/python3.5/site-packages/xlrd/__init__.py‌​", line 394, in open_workbook 
    f = open(filename, "rb") 
FileNotFoundError: [Errno 2] No such file or directory: 'Test_File_1.xlsx' 
+0

Welche Fehler sind Sie immer genau? –

+0

Fehler ist Traceback. Ich bin in der Lage, alle Excel-Dateien innerhalb des gleichen Ordners zu lesen, aber sobald ich die Excel-Dateien aus dem gesamten Verzeichnis lesen möchte, wird es vermasselt. – Aditya

+0

Es ist schwierig zu wissen, ob Sie eine Datei nicht finden, sie nicht öffnen oder die Daten nicht an Ihren Datenrahmen anhängen, ohne den Fehler zu sehen. – Conor

Antwort

1

Der folgende Code wird den Dateinamen einschließlich des vollständigen Pfades geben. In Ihrem Code verwenden Sie den Dateinamen zweimal (einmal mit Verzeichnissen, einmal mit Dateinamen). Der Dateiname enthält keine Pfadinformationen, aber root tut es. Siehe: https://docs.python.org/2/library/os.html

import os 

for root, dirs, files in os.walk(".", topdown=False): 
    for filename in files: 
     if filename.endswith('.xlsx') and filename.startswith('Test_File'): 
      print (os.path.join(root, filename)) 
0

Sie versuchen, die Datei zweimal in der inneren Schleife zu lesen:

... 
data = pd.read_excel(filename, 'Sheet1') 
print(os.path.join(root, filename)) 
data = pd.read_excel(filename, 'Sheet1') 
... 

Die erste ist überflüssig, wenn alle Dateien im Stammverzeichnis sind, aber beide wird fehlschlagen, wenn sie sich in Unterverzeichnissen befinden. Ich würde folgendes tun:

... 
full_filename = os.path.join(root, filename) 
data = pd.read_excel(full_filename, 'Sheet1') 
... 
Verwandte Themen