繁体   English   中英

Python 2.7错误通过urllib.urlretrieve下载Dropbox文件

[英]Python 2.7 error downloading Dropbox file by urllib.urlretrieve

我使用的代码(不要介意图像,这是一个测试):

import urllib
urllib.urlretrieve('https%3A//dl.dropboxusercontent.com/u/95587456/Evenimente/1.jpg','/storage/emulated/0/Temp/1.jpg')

我试图通过公共的保管箱链接下载图像,只是为了弹出此错误:

I/python  ( 3750):  Traceback (most recent call last):
I/python  ( 3750):    File "/home/cristi/Desktop/AplicatieMinister/.buildozer/android/app/main.py", line 102, in <module>
"/home/cristi/Desktop/AplicatieMinister/.buildozer/android/app/main.py", line 63, in IncarcaAfise
I/python  ( 3750):    File "/home/cristi/Desktop/AplicatieMinister/.buildozer/android/platform/python-for-android/build/python-install/lib/python2.7/urllib.py", line 91, in urlretrieve
I/python  ( 3750):    File "/home/cristi/Desktop/AplicatieMinister/.buildozer/android/platform/python-for-android/build/python-install/lib/python2.7/urllib.py", line 237, in retrieve
I/python  ( 3750):    File "/home/cristi/Desktop/AplicatieMinister/.buildozer/android/platform/python-for-android/build/python-install/lib/python2.7/urllib.py", line 205, in open
I/python  ( 3750):    File "/home/cristi/Desktop/AplicatieMinister/.buildozer/android/platform/python-for-android/build/python-install/lib/python2.7/urllib.py", line 461, in open_file
I/python  ( 3750):    File "/home/cristi/Desktop/AplicatieMinister/.buildozer/android/platform/python-for-android/build/python-install/lib/python2.7/urllib.py", line 475, in open_local_file
I/python  ( 3750):  IOError: [Errno 2] No such file or directory: 'https://dl.dropboxusercontent.com/u/95587456/Evenimente/1.jpg'

在Windows上运行此代码没有问题(它将下载文件),但是在android上(由buildozer编译为APK后)会产生先前的错误。

我尝试在链接的末尾添加?dl = 1和?dl = 0,结果出现相同的错误。 另外,我在链接上尝试了urllib.quote(并将'$ 3A'替换为':'),但仍然出现此错误。

关于urllib和urlretrieve在android下的工作方式,我有什么忽略的地方吗?

另外,如果有帮助,可以在开发中使用Kivy / buildozer。

根据堆栈跟踪,似乎urllib.urlretrieve认为您的Dropbox URL是本地文件路径,而不是Internet URL,并试图以此方式打开它。 (即,它尝试使用open_local_file 。)应该根据URL的格式自动确定它,但这显然与您尝试转义“:”混淆了,这是不必要的。

对于我来说,您的示例代码实际上以相同的方式失败,只是在Python解释器中:

In [1]: import urllib

In [2]: urllib.urlretrieve('https%3A//dl.dropboxusercontent.com/u/95587456/Evenimente/1.jpg','./1.jpg')
...
IOError: [Errno 2] No such file or directory: 'https://dl.dropboxusercontent.com/u/95587456/Evenimente/1.jpg'

既然如此,您确定已经在您提到的不同平台上运行了您认为是的代码吗?

只需将URL改回正常对我来说就行了:

In [1]: import urllib

In [2]: urllib.urlretrieve('https://dl.dropboxusercontent.com/u/95587456/Evenimente/1.jpg','./1.jpg')
Out[2]: ('./1.jpg', <httplib.HTTPMessage instance at 0x10da6d878>)

(我还修改了第二个参数以使其在我的计算机上工作,但这无关紧要。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM