是有possibillity得到的文件名蟒蛇httplib的/ urllib的獲取文件名
e.g. xyz.com/blafoo/showall.html
,如果你用的urllib或httplib的工作?
這樣我可以將文件保存在服務器上的文件名下?
如果你去網站,如
xyz.com/blafoo/
你不能看到文件名。
謝謝
是有possibillity得到的文件名蟒蛇httplib的/ urllib的獲取文件名
e.g. xyz.com/blafoo/showall.html
,如果你用的urllib或httplib的工作?
這樣我可以將文件保存在服務器上的文件名下?
如果你去網站,如
xyz.com/blafoo/
你不能看到文件名。
謝謝
要響應HTTP頭獲取文件名:
import cgi
response = urllib2.urlopen(URL)
_, params = cgi.parse_header(response.headers.get('Content-Disposition', ''))
filename = params['filename']
從URL得到文件名:
import posixpath
import urlparse
path = urlparse.urlsplit(URL).path
filename = posixpath.basename(path)
很好的答案,一個小小的修復。使用os.path.basename(path)是一個跨平臺的方式。 – 2013-08-26 06:25:59
@JorgeVargas:沒有。 'posixpath'在這裏是正確的模塊。此外,在這裏使用'os.path'會是一個錯誤。如果你無法弄清楚「爲什麼」,請問,我會詳細說明。 – jfs 2013-08-26 12:03:37
我會問:爲什麼要使用posixpath? – 2014-09-17 00:35:37
沒有多大意義你問。你唯一擁有的是URL。 要麼提取的最後一部分從URL或者你可以檢查HTTP響應這樣的事情
content-disposition: attachment;filename="foo.bar"
此頭可以被服務器設置爲指示的文件名是foo.bar。這通常用於文件下載或類似的東西。
我搜索了你的谷歌問題,我看到它在計算器面前回答我相信。
試着看一下這篇文章:
Using urllib2 in Python. How do I get the name of the file I am downloading?
[urllib2的文件名](HTTP的文件名通常是通過 內容處置頭包含服務器:
content-disposition: attachment; filename=foo.pdf
您有機會獲得頭通過
result = urllib2.urlopen(...) result.info() <- contains the headers i>>> import urllib2 ur>>> result = urllib2.urlopen('http://zopyx.com') >>> print result <addinfourl at 4302289808 whose fp = <socket._fileobject object at 0x1006dd5d0>> >>> result.info() <httplib.HTTPMessage instance at 0x1006fbab8> >>> result.info().headers ['Date: Mon, 04 Apr 2011 02:08:28 GMT\r\n', 'Server: Zope/(unreleased version, python 2.4.6, linux2) ZServer/1.1
Plone/3.3.4 \ r \ n','Content-Length:15321 \ r \ n','Content-Type: text/html; charset = utf-8 \ r \ n','Via:1.1 www.zopyx.com \ r \ n', 'Cache-Control:max-age = 3600 \ r \ n','Expires:Mon,04 Apr 2011 3點08分28秒 GMT \ r \ n」, '連接:關閉\ r \ n']
見
可能重複: //www.stackoverflow.com/questions/163009/urllib2-file-name) – KevinDTimm 2012-08-02 18:11:48