2013-06-27 68 views
1

我試圖從網絡位置打開一個.csv文件,並運行到以下error..i有以下幾個問題打開一個網絡位置

1.How在打開窗口的網絡位置

2.如何在Windows和Linux中打開相同的網絡位置?

import csv 
import datetime 
from collections import deque 
#from collections import maxlength 

icount=9 
now = datetime.datetime.now() 
time =now.strftime("%m/%d/%Y") 
#Keep appending date and count everytime this script is run 
c = csv.writer(open("\\data\loc\\scripts\trend.csv", "ab")) 
c.writerow([time, icount-1]) 

#Now read the recent 5 entries and print 
#cr = csv.reader(open("trend.csv","rb")) 


with open('trend.csv','rU') as fin: 
    reader=csv.reader(fin) 
    d=deque(reader,8) 
for l in d: 
    print l[0] 
    print l[1] 

錯誤: -

Traceback (most recent call last): 
    File "database.py", line 10, in <module> 
    c = csv.writer(open("\\data\loc\scripts\trend.csv", "ab")) 
IOError: [Errno 2] No such file or directory: '\\data\loc\\scripts\trend.csv' 
+1

您的斜槓向後移動......我想 –

回答

1

你的第一個問題是在這裏:

c = csv.writer(open("\\data\loc\\scripts\trend.csv", "ab")) 

因爲你沒有逃脫你的反斜槓,該\t變成一個標籤,每個\\變成一個反斜槓和\l你很幸運,它沒有改變。所以,這是你要求的路徑:

\data\loc\scripts rend.csv 

顯然有什麼也沒有。

始終使用Windows路徑的原始字符串,並且不會出現此問題。

c = csv.writer(open(r"\\data\loc\\scripts\trend.csv", "ab")) 

假設有一個名爲data與命名loc份額SMB服務器,並且您已經登錄,這將現在的工作。

你仍然應該在scripts之前擺脫額外的反斜槓,並且總是關閉你打開的文件......但這些都不會導致你的問題。


從linux,你不能訪問像這樣的UNC路徑的SMB共享。

有兩種常見的解決方法。

首先,您可以在您的文件系統的某處安裝SMB共享。如果你已經安裝smb://data/loc/mnt/data-loc,所有你必須寫的是:

c = csv.writer(open(r"/mnt/data-loc/scripts/trend.csv", "ab")) 

或者,你可以直接訪問SMB,有點像處理一個FTP服務器。如果你使用search PyPI,你可以找到各種Python庫來簡化這個過程。其中許多需要libsmbclient庫,​​工具或其他您可能尚未安裝的其他工具,因此請務必閱讀要求。以下是您如何使用這些庫中的一種來做到這一點:

import smbclient 

smb = smbclient.SambaClient(server='DATA', share='LOC', domain='WORKGROUP', 
          username='me', password='swordfish') 
smb.chdir('scripts') 
with smb.open('trend.csv', 'rb') as f: 
    data = f.read() 
sio = StringIO.StringIO(data) 
c = csv.writer(sio) 
c.writerow([time, icount-1]) 
with smb.open('trend.csv', 'wb') as f: 
    f.write(sio.getvalue()) 
smb.close() 
相關問題