2017-08-17 1 views
0

Szenario: Ich versuche, eine Excel-Datei aus einem Server-Ordner zu lesen und danach jedes Arbeitsblatt dieser Datei in einen Datenrahmen zu lesen und einige Operationen durchzuführen.So lesen Sie eine Excel-Datei direkt von einem Server mit Python

Problem: Ich habe mehrere Ansätze versucht, aber mit verschiedenen Situationen konfrontiert: entweder ich lese die Datei, aber es wird als Str gesehen und die Operationen können nicht ausgeführt werden, oder die Datei wird nicht gelesen.

Was ich versuchte so weit:

#first attempt 
os.path(r'\\X\str\Db\C\Source\selection\Date\Test','r') 

#second attempt 
directory = os.getcwd() + "\\C\\Source\\selection\\Date\\Test" 

#third attempt 
f = os.getcwd() + "\\C\\Source\\selection\\Date\\Test\\12.xlsx" 

#fourth attempt 
f = open(r'\\X\str\Db\C\Source\selection\Date\Test\12.xlsx', 'r') 

db1 = pd.DataFrame() 
db2 = pd.DataFrame() 
db3 = pd.DataFrame() 
bte = pd.DataFrame() 
fnl = pd.DataFrame() 

wb = load_workbook(f) 

for sheet in wb.worksheets: 

    if sheet.title == "db1": 

     db1 = pd.read_excel(f, "db1") 

Obs: Ich erforschte auch die Dokumentation mit pd und einigen anderen ähnlichen Fragen in SO zum Lesen, aber konnte immer noch nicht dieses Problem lösen. Ex: Python - how to read path file/folder from server Using Python, how can I access a shared folder on windows network? https://docs.python.org/release/2.5.2/tut/node9.html#SECTION009200000000000000000

Frage: Was ist der richtige Weg, dies zu erreichen?

Antwort

1

Sie müssen die Datei als rb-Modus öffnen

b = bynary Datei r = nur die Datei lesen

f = open('//X/str/Db/C/Source/selection/Date/Test/12.xlsx', 'rb') 

Sie könnenverwenden 693.210, die für Sie

Import Pandas

import pandas 
f = pandas.read_excel(open('//X/str/Db/C/Source/selection/Date/Test/12.xlsx','rb'), sheetname='Sheet 1') 
# or using sheet index starting 0 
f = pandas.read_excel(open('//X/str/Db/C/Source/selection/Date/Test/12.xlsx','rb'), sheetname=2) 

Es meiste Arbeit tun, ist eine ähnliche Frage here

+1

Der zweite Teil funktioniert perfekt. Ich muss die Arbeitsmappe nicht erneut in eine Variable laden. Danke vielmals. – DGMS89

0

From here.

Versuchen Slashes in Ihrem UNC-Pfad:

f = open('//X/str/Db/C/Source/selection/Date/Test/12.xlsx', 'rb') 
+0

Dank arbeiten. Ich habe es gerade versucht, es ergibt sich ein neuer Fehler: OSError: Datei-Objekt muss im Binär-Modus geöffnet werden. – DGMS89

+0

Verwenden Sie f = offen ('// X/str/Db/C/Quelle/Auswahl/Datum/Test/12.xlsx', 'rb'). xls ist keine Textdatei, sondern eine Bynary-Datei. https://docs.python.org/2/library/functions.html#open –

0

ich gleiche Problem hatte. Versuchen Sie Pandas und Slashes

pd.read_excel('//X/str/Db/C/Source/selection/Date/Test/12.xlsx') 

haben für die Antwort perfekt

Verwandte Themen