无法使用urllib读取文件

时间:2014-02-19 09:39:49

标签: python python-2.7 networking urllib

我目前正在本地托管SimpleHTTPServer并将其cd到我的服务器文件夹中。我正在尝试使用afplay来播放当前位于服务器文件夹中的音频。这是我的代码:

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'

我不确定为什么拒绝权限,因为我对该文件夹有读写权限。

1 个答案:

答案 0 :(得分: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()