2014-02-19 55 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()