2012-08-02 11 views
8

あなたはurllibはやhttplibで作業する場合、ファイル名のpython httplib/urllibはGETファイル名

e.g. xyz.com/blafoo/showall.html 

を取得するがpossibillityのですか?

私はサーバー上のファイル名でファイルを保存できますか?

あなたは

xyz.com/blafoo/ 

のようなサイトに行く場合は、ファイル名を参照してください傾けます。

ありがとうございました

+0

[urllib2のファイル名]の可能重複ます(http: //stackoverflow.com/questions/163009/urllib2-file-name) – KevinDTimm

答えて

22

import posixpath 
import urlparse 

path = urlparse.urlsplit(URL).path 
filename = posixpath.basename(path) 
+0

偉大な答え、1つの小さな修正。 os.path.basename(path)を使用することは、これを行うためのクロスプラットフォームの方法です。 –

+1

@JorgeVargas:いいえ。 'posixpath'はここで正しいモジュールです。さらに、 'os.path'をここで使うのは間違いでしょう。あなたが「なぜ」を理解できない場合は、尋ねてみてください。 – jfs

+0

私は質問します:なぜ1つはposixpathを使うべきですか? –

1

あなたが何を求めているのか分かりません。あなたが持っている唯一のものはURLです。 URLから最後の部分を抽出したり、

content-disposition: attachment;filename="foo.bar" 

のようなもの。このヘッダーのHTTPレスポンスをチェックすることのどちらかが、ファイル名がfoo.barであることを示すために、サーバによって設定することができます。これは、通常、ファイルのダウンロードなどに使用されます。

import cgi 

response = urllib2.urlopen(URL) 
_, params = cgi.parse_header(response.headers.get('Content-Disposition', '')) 
filename = params['filename'] 

URLからファイル名を取得するには:応答のHTTPヘッダからファイル名を取得するには

0

私はGoogleで質問を検索し、私はそれが前にstackoverflowのに答えたことを見ました私は信じている。

この記事を見て試してみてください。

Using urllib2 in Python. How do I get the name of the file I am downloading?

ファイル名は通常、 コンテンツ-dispositionヘッダーを介してサーバーによって含まれています

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;キャッシュコントロール:max-age = 3600 \ r \ n '、'有効期限:4月4日(月)、charset = utf-8 \ r \ n '、'経由:1.1 www.zopyx.com \ r \ n '、 2011 3時08分28秒 GMT \ rを\ n」の '接続:近いの\ r \ n']

を参照してください

http://docs.python.org/library/urllib2.html

関連する問題