1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python post 上传文件_如何在 Python 中模拟 post 表单来上传文件

python post 上传文件_如何在 Python 中模拟 post 表单来上传文件

时间:2019-05-20 19:37:25

相关推荐

python post 上传文件_如何在 Python 中模拟 post 表单来上传文件

展开全部

发个以前用urllib2模块来做的62616964757a686964616fe4b893e5b19e31333335343366classHTTPError(urllib2.HTTPDefaultErrorHandler):

def__init__(self):

self.errMsg=''

defgetErrorMsg(self):

returnself.errMsg

defhttp_error_default(self,req,fp,code,msg,hdrs):

ifcode>=400:

self.errMsg=fp.read()

raiseurllib2.HTTPError(req.get_full_url(),code,msg,hdrs,fp)

'''

urllib2postrequest:eg.uploadfile

'''

defsendMultipartPost(url,params,files):

#paramslikethis:{'type':'upload','id':'xxxx'}

#fileslikethis:{'file':'C:/xxxx.txt'}

posterParams=[]

forkeyinparams:

value=params[key]

try:

posterParams.append(poster.encode.MultipartParam(key,value))

exceptException,e:

printe,key,value

raisee

forkeyinfiles:

value=files[key]

try:

value=value.encode(sys.getfilesystemencoding())

posterParams.append(poster.encode.MultipartParam.from_file(key,value))

exceptException,e:

printe,key,value

raisee

try:

datagen,headers=poster.encode.multipart_encode(posterParams)

exceptException,e:

printe,key,value

raisee

ifheadersisNone:

headers={}

try:

request=urllib2.Request(url,datagen,headers)

request.add_header('Accept-encoding','gzip')

request.add_header("Accept","*/*")

#printrequest

#printrequest.get_data()

opener,err=getUrllib2(True,False)

response=opener.open(request)

exceptException,e:

printe,url,files

printerr.getErrorMsg()

raisee

data=response.read()

'''

data=response.read(16*1024)

length=len(data)

_data=None

whilelength:

if_data:data+=_data

_data=response.read(16*1024)

length=len(_data)

'''

if'gzip'==response.headers.get('content-encoding',''):

compressedstream=StringIO.StringIO(data)

gzipper=gzip.GzipFile(fileobj=compressedstream)

data=gzipper.read()

returndata

defgetUrllib2(upload=False,redirect=False):

ifupload:

handlers=poster.streaminghttp.get_handlers()

else:

handlers=[]

err=HTTPError()

handlers.append(err)

handlers.append(getCookie())

try:

opener=urllib2.build_opener(*handlers)

exceptException,e:

printerr.getErrorMsg()

raisee

returnopener,err

defgetCookie():

global_cookieProcessor

cookiefile="./cookies.txt"

try:

httpcookie=cookielib.MozillaCookieJar(cookiefile)

httpcookie.load(ignore_discard=True,ignore_expires=True)

httpcookie=urllib2.HTTPCookieProcessor(httpcookie)

exceptException,e:

printe

httpcookie=_cookieProcessor

#_cookieProcessor=urllib2.HTTPCookieProcessor(cookielib.CookieJar())

returnhttpcookie

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。