2014-02-19 58 views
0

我目前在本地託管一個SimpleHTTPServer並將其cd'd到我的服務器文件夾中。我正在嘗試使用afplay來播放當前位於服務器文件夾中的音頻。這是我的代碼:無法使用urllib讀取文件

import subprocess 
import os 
import urllib 
import urllib2 

urllib.urlretrieve('http://0.0.0.0:8000', r'Daybreak.mp3') 
return_code = subprocess.call(["afplay", audio_file]) 

該文件位於服務器當前託管的文件夾中,並且我正在終端中獲取GET請求。這是我得到的錯誤:

File "<stdin>", line 1, in <module> 
    File "<string>", line 11, in <module> 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 94, in urlretrieve 
    return _urlopener.retrieve(url, filename, reporthook, data) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 244, in retrieve 
    tfp = open(filename, 'wb') 
IOError: [Errno 13] Permission denied: 'Daybreak.mp3' 

我不知道爲什麼權限被拒絕,因爲我已經讀取和寫入文件夾的權限。

回答

0

您可能擁有對文件夾的讀寫權限。但是你沒有在python腳本中指定你的訪問憑證。 Python無法知道您已被授權。

您可能想要使用某種授權方法,如HTTPPasswordMgrWithDefaultRealm()

serverUrl = "..." 
ID = "..." 
accessToken = "..." 


p = urllib2.HTTPPasswordMgrWithDefaultRealm() 
p.add_password(None, serverUrl, ID, accessToken) 
handler = urllib2.HTTPBasicAuthHandler(p) 
opener = urllib2.build_opener(handler) 
urllib2.install_opener(opener) 
req = urllib2.urlretrieve()