2017-08-17 111 views
0

方案:我想讀從服務器文件夾中的Excel文件,之後讀取該文件的每個工作表到一個數據幀,並執行一些操作。如何直接從服務器與Python讀取Excel文件

問題:我已經嘗試多種方法,但面對不同的情況:要麼我讀的文件,但它被視爲一個STR和不能執行的操作,或文件沒有被讀取。

我試了一下,到目前爲止:

#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") 

觀測數據:我也研究了文檔與PD和SO其他一些類似的問題閱讀,但還是沒能解決這個問題。例如: 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

問題:什麼是實現這一目標的正確方法?

回答

1

您需要打開該文件作爲RB模式

B = bynary文件 R =只讀文件

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

您可以使用pandas library將完成大部分的工作,爲您

進口大熊貓

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) 

有一個類似的問題here

+1

第二部分完美地工作。我不必將工作簿重新加載到變量中。非常感謝。 – DGMS89

0

From here.

嘗試使用在你的UNC路徑斜槓:

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

感謝您的回答。我剛剛嘗試過,它會產生一個新的錯誤:OSError:文件對象必須以二進制模式打開。 – DGMS89

+0

使用f = open('// X/str/Db/C/Source/selection/Date/Test/12.xlsx','rb')。 xls不是文本文件,是一個輔助文件。 https://docs.python.org/2/library/functions.html#open –

0

我有同樣的問題。嘗試熊貓和斜槓

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

擁有完美運行