0

ファイルの内容をpastebinに送信するために、pycURLライブラリを使用してPython 2.7で簡単なプログラムを作成しています。プログラムのコードは次のとおりです。

#!/usr/bin/env python2

import pycurl, os

def send(file):
    print "Sending file to pastebin...."
    curl = pycurl.Curl()
    curl.setopt(pycurl.URL, "http://pastebin.com/api_public.php")
    curl.setopt(pycurl.POST, True)
    curl.setopt(pycurl.POSTFIELDS, "paste_code=%s" % file)
    curl.setopt(pycurl.NOPROGRESS, True)
    curl.perform()

def main():
    content = raw_input("Provide the FULL path to the file: ")
    open = file(content, 'r')
    send(open.readlines())
    return 0

main()

出力されたペーストビンは、標準の Python リストのように見えます:['string\n', 'line of text\n', ...]など。

見栄えが良く、実際に人間が読めるようにフォーマットする方法はありますか? また、 で複数のデータ入力を使用する方法を誰か教えていただければ、とてもうれしいですPOSTFIELDS。Pastebin API は主なデータ入力として を使用しますが、アップロードの名前を設定したり、非公開に設定したりpaste_codeするオプションのものを使用できます。paste_namepaste_private

4

4 に答える 4

3

まず、言われた通りに使い.read()ますvirhilo

他のステップはurllib.urlencode()、文字列を取得するために使用することです:

curl.setopt(pycurl.POSTFIELDS, urllib.urlencode({"paste_code": file}))

これにより、より多くのフィールドを投稿することもできます:

curl.setopt(pycurl.POSTFIELDS, urllib.urlencode({"paste_code": file, "paste_name": name}))
于 2011-01-08T13:39:53.000 に答える
1
import pycurl, os

def send(file_contents, name):
    print "Sending file to pastebin...."
    curl = pycurl.Curl()
    curl.setopt(pycurl.URL, "http://pastebin.com/api_public.php")
    curl.setopt(pycurl.POST, True)
    curl.setopt(pycurl.POSTFIELDS, "paste_code=%s&paste_name=%s" \
                                   % (file_contents, name))
    curl.setopt(pycurl.NOPROGRESS, True)
    curl.perform()


if __name__ == "__main__":
    content = raw_input("Provide the FULL path to the file: ")
    with open(content, 'r') as f:
        send(f.read(), "yournamehere")
    print

ファイルを読み取るときは、withステートメントを使用します (これにより、何か問題が発生した場合にファイルが適切に閉じられるようになります)。

main関数を用意してから呼び出す必要はありません。コンストラクトを使用if __name__ == "__main__"して、呼び出されたときにスクリプトを自動的に実行します (これをモジュールとしてインポートする場合を除く)。

複数の値を投稿するには、URL を手動で作成できます。異なるキーと値のペアをアンパサンド ( &) で区切るだけです。このように: key1=value1&key2=value2. urllib.urlencodeまたは、 (他の人が提案したように)で構築することもできます。

EDIT :urllib.urlencode投稿される文字列を使用すると、ソース文字列に面白い/予約済み/珍しい文字が含まれている場合に、コンテンツが適切にエンコードされます。

于 2011-01-08T13:40:32.970 に答える
0

.readlines() の代わりに .read() を使用する

于 2011-01-08T13:35:01.987 に答える
0

クエリ文字列引数を送信するのPOSTFIELDSと同じ方法で送信する必要があります。したがって、最初に、に送信する文字列をエンコードするpaste_code必要があります。次に、を使用し&て POST 引数を追加できます。

例:

paste_code=hello%20world&paste_name=test

幸運を!

于 2011-01-08T13:39:57.720 に答える