Python-pycurl列表分离

Python-pycurl列表分离,python,python-2.7,list,split,pycurl,Python,Python 2.7,List,Split,Pycurl,我正在使用Python,我想知道如何使脚本在给定参数和参数值时自动识别它们 import os import pycurl, re, cStringIO from urllib import urlencode import Queue import threading import sys import socket import io def curl(host,option,params): try: if option == "GET": buf = cS

我正在使用Python,我想知道如何使脚本在给定参数和参数值时自动识别它们

import os
import pycurl, re, cStringIO
from urllib import urlencode
import Queue
import threading
import sys
import socket
import io

def curl(host,option,params):

try:

    if option == "GET":

        buf = cStringIO.StringIO()

        c = pycurl.Curl()

        c.setopt(c.URL, host)   
        c.setopt(c.WRITEFUNCTION, buf.write)
        c.setopt(pycurl.SSL_VERIFYPEER, 0)
        c.setopt(pycurl.SSL_VERIFYHOST, 0)
        c.setopt(c.USERAGENT, 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36')
        c.setopt(pycurl.NOSIGNAL, 1)
        c.perform()
        html = buf.getvalue()

        print html

    elif option == "POST":

        buf = cStringIO.StringIO()

        c = pycurl.Curl()

        c.setopt(c.URL, host)

        x = params.split(":")[0]
        y = params.split(":")[1]
        post_data = {x:y}
        postfields = urlencode(post_data)
        c.setopt(c.POSTFIELDS, postfields)          
        c.setopt(c.WRITEFUNCTION, buf.write)
        c.setopt(pycurl.SSL_VERIFYPEER, 0)
        c.setopt(pycurl.SSL_VERIFYHOST, 0)
        c.setopt(c.USERAGENT, 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36')
        c.setopt(pycurl.NOSIGNAL, 1)
        c.perform()
        html = buf.getvalue()

        print html

except pycurl.error,e:

        print e

curl('localhost/b.php','POST','par1:val1|par2:val2|par3:val3')
到目前为止,我可以手动完成,但每次编辑代码并为每个参数添加这些拆分函数都很无聊

我如何将此代码设置为自动发布参数和值的代码,如下所示:

[par1] => val1
[par2] => val2
[par3] => val3
我的实际结果:

python p.py 排列 ( [par1]=>val1 | par2
)

对我来说,你似乎需要像下面这样提取一个工人功能来 重新使用代码调用
curl

def run_curl(host):
    """Run curl on provided parameters"""
    buf = cStringIO.StringIO() 
    c.setopt(c.URL, host)   
    c.setopt(c.WRITEFUNCTION, buf.write)
    c.setopt(pycurl.SSL_VERIFYPEER, 0)
    c.setopt(pycurl.SSL_VERIFYHOST, 0)
    c.setopt(c.USERAGENT, 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36')
    c.setopt(pycurl.NOSIGNAL, 1)
    try:
       c.perform()
    except pycurl.error:
       raise
    return buf
if option==“GET”:
您无法真正摆脱设置中的代码,但可以通过提取辅助函数使其中的代码部分小得多


同样,对于这个任务来说,似乎是一个不错的选择。

对我来说,您似乎需要提取一个工作函数,如下所示 重新使用代码调用
curl

def run_curl(host):
    """Run curl on provided parameters"""
    buf = cStringIO.StringIO() 
    c.setopt(c.URL, host)   
    c.setopt(c.WRITEFUNCTION, buf.write)
    c.setopt(pycurl.SSL_VERIFYPEER, 0)
    c.setopt(pycurl.SSL_VERIFYHOST, 0)
    c.setopt(c.USERAGENT, 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36')
    c.setopt(pycurl.NOSIGNAL, 1)
    try:
       c.perform()
    except pycurl.error:
       raise
    return buf
if option==“GET”:
您无法真正摆脱设置中的代码,但可以通过提取辅助函数使其中的代码部分小得多


同样对于这个任务来说也是一个不错的选择。

您好,我想做一个curl函数,当我调用选项是POST或GET时,不要看GET,看POST,我写的参数工作不正常,我想要的是脚本在调用POST时自动检测所有参数和这些参数的值。那么为什么不从您的问题中删除GET部分,因为它与实际问题无关?因为参数部分是您要寻找的kwargs?因为它是完整的代码,所以人们可以理解我所做的。基本上,POST必须找出我在curl()调用函数中使用的参数及其值,并将它们与c.setopt(c.POSTFIELDS,POSTFIELDS)一起使用功能来源:假装你正在与一位忙碌的同事交谈,并且必须用一句话总结你的整个问题:你可以包括哪些细节来帮助别人识别和解决你的问题?。。。GET代码对识别参数问题没有帮助。不管怎样,kwarg-link解决了吗?嗨,我想做一个旋度函数,当我调用选项是POST或GET时,不要看GET,看POST,我写的参数工作不正常,我想要的是脚本在调用POST时自动检测所有参数和这些参数的值。那么为什么不从您的问题中删除GET部分,因为它与实际问题无关?因为参数部分是您要寻找的kwargs?因为它是完整的代码,所以人们可以理解我所做的。基本上,POST必须找出我在curl()调用函数中使用的参数及其值,并将它们与c.setopt(c.POSTFIELDS,POSTFIELDS)一起使用功能来源:假装你正在与一位忙碌的同事交谈,并且必须用一句话总结你的整个问题:你可以包括哪些细节来帮助别人识别和解决你的问题?。。。GET代码对识别参数问题没有帮助。不管怎样,kwarg link解决了吗?