имя файла urllib2

Для меня это произошло после конфликта слиянием.

Я попытался очистить и удалить папку сборки, но ни одна из них не помогла. Эта проблема продолжалась независимо. Затем я повторно связал ссылку, удалив группы, которые были проблематичными и повторно добавлены в проект, и это сработало.

31
задан Adam Nelson 11 April 2016 в 19:32
поделиться

7 ответов

Вы имели в виду 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'
49
ответ дан Jonny Buchanan 27 November 2019 в 21:40
поделиться
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, но возможно все еще помогает:)

0
ответ дан Blexy 27 November 2019 в 21:40
поделиться

не, что я знаю о.

, но можно проанализировать его достаточно легкий как это:

url = 'http://example.com/somefile.zip'
print url.split('/')[-1]

1
ответ дан Corey Goldberg 27 November 2019 в 21:40
поделиться

Я предполагаю, что это зависит, что Вы подразумеваете под парсингом. Нет никакого способа получить имя файла, не анализируя URL, т.е. удаленный сервер не дает Вам имя файла. Однако Вы не должны делать многого сами, существует urlparse модуль:

In [9]: urlparse.urlparse('http://example.com/somefile.zip')
Out[9]: ('http', 'example.com', '/somefile.zip', '', '', '')
1
ответ дан miracle2k 27 November 2019 в 21:40
поделиться

Вы имеете в виду urllib2.urlopen? Нет никакой функции, вызванной openfile в urllib2 модуль.

Так или иначе, используйте urllib2.urlparse функции:

>>> from urllib2 import urlparse
>>> print urlparse.urlsplit('http://example.com/somefile.zip')
('http', 'example.com', '/somefile.zip', '', '')

Вуаля.

2
ответ дан Dan Lenski 27 November 2019 в 21:40
поделиться

Я думаю, что "имя файла" не является очень хорошо определенным понятием когда дело доходит до передач http. Сервер мог бы (но не требоваться, чтобы), обеспечивают тот как заголовок "довольного расположения", можно попытаться получить это с remotefile.headers['Content-Disposition']. Если это перестало работать, вероятно, необходимо проанализировать URI сами.

7
ответ дан Rafał Dowgird 27 November 2019 в 21:40
поделиться

Если Вы только хотите само имя файла, предполагая, что нет никаких переменных запроса в конце как 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 или пути к файлу.

13
ответ дан Jay 27 November 2019 в 21:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: