Для меня это произошло после конфликта слиянием.
Я попытался очистить и удалить папку сборки, но ни одна из них не помогла. Эта проблема продолжалась независимо. Затем я повторно связал ссылку, удалив группы, которые были проблематичными и повторно добавлены в проект, и это сработало.
Вы имели в виду urllib2.urlopen?
Вы могли потенциально подняться , предназначил имя файла , если сервер отправлял заголовок Довольного Расположения путем проверки remotefile.info()['Content-Disposition']
, но как это, я думаю, что необходимо будет просто проанализировать URL.
Вы могли использовать urlparse.urlsplit
, но если у Вас будут какие-либо URL как во втором примере, Вы закончите тем, что имели необходимость вытянуть имя файла сами так или иначе:
>>> urlparse.urlsplit('http://example.com/somefile.zip')
('http', 'example.com', '/somefile.zip', '', '')
>>> urlparse.urlsplit('http://example.com/somedir/somefile.zip')
('http', 'example.com', '/somedir/somefile.zip', '', '')
Мог бы также просто сделать это:
>>> 'http://example.com/somefile.zip'.split('/')[-1]
'somefile.zip'
>>> 'http://example.com/somedir/somefile.zip'.split('/')[-1]
'somefile.zip'
import os,urllib2
resp = urllib2.urlopen('http://www.example.com/index.html')
my_url = resp.geturl()
os.path.split(my_url)[1]
# 'index.html'
Это не openfile, но возможно все еще помогает:)
не, что я знаю о.
, но можно проанализировать его достаточно легкий как это:
url = 'http://example.com/somefile.zip'
print url.split('/')[-1]
Я предполагаю, что это зависит, что Вы подразумеваете под парсингом. Нет никакого способа получить имя файла, не анализируя URL, т.е. удаленный сервер не дает Вам имя файла. Однако Вы не должны делать многого сами, существует urlparse
модуль:
In [9]: urlparse.urlparse('http://example.com/somefile.zip')
Out[9]: ('http', 'example.com', '/somefile.zip', '', '', '')
Вы имеете в виду urllib2.urlopen
? Нет никакой функции, вызванной openfile
в urllib2
модуль.
Так или иначе, используйте urllib2.urlparse
функции:
>>> from urllib2 import urlparse
>>> print urlparse.urlsplit('http://example.com/somefile.zip')
('http', 'example.com', '/somefile.zip', '', '')
Вуаля.
Я думаю, что "имя файла" не является очень хорошо определенным понятием когда дело доходит до передач http. Сервер мог бы (но не требоваться, чтобы), обеспечивают тот как заголовок "довольного расположения", можно попытаться получить это с remotefile.headers['Content-Disposition']
. Если это перестало работать, вероятно, необходимо проанализировать URI сами.
Если Вы только хотите само имя файла, предполагая, что нет никаких переменных запроса в конце как http://example.com/somedir/somefile.zip?foo=bar тогда, можно использовать os.path.basename для этого:
[user@host]$ python
Python 2.5.1 (r251:54869, Apr 18 2007, 22:08:04)
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.path.basename("http://example.com/somefile.zip")
'somefile.zip'
>>> os.path.basename("http://example.com/somedir/somefile.zip")
'somefile.zip'
>>> os.path.basename("http://example.com/somedir/somefile.zip?foo=bar")
'somefile.zip?foo=bar'
Некоторые другие плакаты упомянули, что использовали urlparse, который будет работать, но необходимо было бы все еще разделить ведущий каталог от имени файла. При использовании os.path.basename () тогда, Вы не должны волноваться об этом, так как он возвращает только заключительную часть URL или пути к файлу.