Intentando publicar datos de formulario de varias partes en Python, no se publicará

Soy bastante nuevo en Python, así que me disculpo por adelantado si esto es algo simple, me estoy perdiendo. Estoy tratando de publicar datos en un formulario multiparte en python. El script se ejecuta, pero no se publicará. No estoy seguro de lo que estoy haciendo mal.

import urllib, urllib2 from poster.encode import multipart_encode from poster.streaminghttp import register_openers def toqueXF(): register_openers() url = "http://localhost/trunk/admin/new.php" values = {'form':open('/test.pdf'), 'bandingxml':open('/banding.xml'), 'desc':'description'} data, headers = multipart_encode(values) request = urllib2.Request(url, data, headers) response = urllib2.urlopen(request) the_page = response.read() print the_page 

Cuando llamo a esto, la impresión me da el html de la página, como si ejecutara “urllib2.urlopen (url)” y no publiqué ningún dato:

  

Select PDF file to create form from:

(Optional): Select banding XML file:

Enter description of form:

El cartel es para codificar los datos en multipart / form data y se puede encontrar aquí: http://atlee.ca/software/poster/index.html

Encontré el código para usar el póster aquí: Uso de MultipartPostHandler para POST datos de formulario con Python

Si alguien tiene curiosidad, estoy tratando de publicar automáticamente un archivo de bandas pdf y xml después de que se generen para queXF (un software de reconocimiento de marca óptica de código abierto). http://quexf.sourceforge.net/

 import urllib, urllib2 from poster.encode import multipart_encode from poster.streaminghttp import register_openers def queXF(): register_openers() url = "http://lilix2/trunk/admin/new.php" values = {'form':open('test.pdf'), 'bandingxml':open('banding.xml'), 'desc':'description'} data, headers = multipart_encode(values) headers['User-Agent'] = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' request = urllib2.Request(url, data, headers) request.unverifiable = True response = urllib2.urlopen(request) the_page = response.read() 

La adición de headers['User-Agent'] y request.unverifiable = True parece haberlo corregido.

Trate de usar la biblioteca de solicitudes . Los documentos sobre la publicación de archivos de varias partes están aquí: http://docs.python-requests.org/en/latest/user/quickstart/#post-a-multipart-encoded-file