2009-05-28 27 views
1
import cgitb 
import Cookie, urllib2 
from cookielib import FileCookieJar 
cgitb.enable() 
c = Cookie.SmartCookie() 
c['ini'] = 1 
savedc = FileCookieJar() 
savedc.add_cookie_header(c.output()) 
savedc.save() 

shoulden'tこれはクッキーを保存する?...私は100万回のようなPythonドキュメント上で読んでいるPythonのクッキー質問

、私はちょうどそれを得ることはありません:(

savedc = FileCookieJar('cookies.txt') 

は誰か:(

+0

"FileCookieJar"の後に "()"がないのはなぜですか? –

+0

こんにちは私はそれを修正し、まだ動作しません?.. –

答えて

0

はあなたがクッキーを保存するファイルに名前を付けていることを確認してください助けてくださいはRequestオブジェクトを受け取ります。 set_cookieはCookieを取得します。ドキュメントに記載されているとおり、FileCookieJar.saveは "NotImplementedErrorを発生させます。サブクラスはこのメソッドを実装しないままにすることがあります。"ドキュメント1E6 +を1回読んでみたはずです。

+1

ああ...ドキュメントについてのあなたの最後の文はあまりにもフレンドリーに聞こえません –

+0

それはまだ保存されていないようですか? mozzila firefoxを閉じるとクッキーは無秩序になりますか? –

+0

どのようにして実際にクッキーをファイルに保存しますか?saveメソッドは例外を発生させ、プログラムは停止し、クッキーを含むファイルはありません。私はPythonで新しく、このメソッドがプログラムを停止する理由を理解していません... – Azimuth

5

Raf、私が言うことができるのは、Egads!ドキュメントは確かにではなく、クリアです!私は何年もPythonを使用してきましたが、この単純なスタックオーバーフローの問題は、実際の作業を始める前にすぐに取り除くと思っていたので、答えに20分以上かかりました。 :-)

まず、「Cookie」ライブラリと「cookielib」ライブラリは完全に別物であり、お互いに関係がないことがわかります。これはドキュメントに記載されていますが、各ドキュメントページの「参照」セクションまでスクロールして調べる必要があります。これが代わりに各ページの上部にあると便利です。

"Cookie"ライブラリのオブジェクトを "cookielib"に渡すと、辞書の中にクッキーが保存され、 "Cookie"クッキーが次のように見えるため、 "cookielib"内部が混乱します。 - 辞書なので、 "cookielib"はそれを内部データ構造の1つに混同し、内部に他のクッキーを保存します。私は結果として得るエラーは次のとおりです。

<type 'exceptions.AttributeError'>: 'str' object has no attribute 'discard' 
    args = ("'str' object has no attribute 'discard'",) 
    message = "'str' object has no attribute 'discard'" 

実は、それは私がそこに属していないCookie.Cookieオブジェクトの属性の束を貼り付ける後を取得エラーだが、私は私の前に追加したこと私はクッキーを手に入れようとする絶望的な仕事に従事していることに気付いた。クッキーはクッキーのように振る舞う。

<class 'Cookie.CookieError'>: Invalid Attribute name 
    args = ('Invalid Attribute name',) 
    message = 'Invalid Attribute name' 

(そして、私はいくつかの貧しい人々の将来の魂は、クッキークラスをミックスし、私はやったGoogle検索を行う場合には、ここでエラーを入れている:以前のエラーのようなすべての属性の欠落エラーだった:-) !私はなっていたエラーのいずれかの結果を上げているのなし)

だから私たちは遠くに進む前に、私が知っている必要があります:あなたは、クライアントにクッキーを提供して取得しようと、ウェブサーバーように行動しようとしていますクライアントが次のリクエストを送信したときに元の状態に戻ります。この場合、「Cookie」モジュールの仕組みを表示する必要があります。それとも、Webクライアントにテストや楽しいことを書いているのですか?Webリクエストを使ってWebサイトに送信したCookieを壊してしまいます。その場合は "cookielib"について話してください。

+0

うわー...素晴らしい答え。 –