Inicie sesión y cargue el archivo utilizando las ‘solicitudes’ de Python

Necesito iniciar sesión y subir un archivo. El problema al que me enfrento es que la página de inicio de sesión es diferente de la página de carga. Si tengo que hacerlo manualmente, login.php sesión ( login.php ) en el sitio y luego login.php a la página de carga ( uploader.php ) para cargar el archivo. Esto lo que he escrito:

 import requests url1='http://www.abc.com/login.php' r = requests.post(url1, auth=('uname', 'pword')) print r.status_code //msg:'200' payload = {'upload':open('./tmp.txt')} url2='http://www.abc.com/uploader.php' r = requests.post(url2, data=payload) print r.text //msg: "you must first login to upload the file" 

Mi código obviamente no funciona como se esperaba. La parte de inicio de sesión funciona correctamente pero no la parte de carga. Por favor, ¿cómo puedo lograr mi objective.

ACTUALIZAR:

Para dar más información sobre mi pregunta, estoy dando detalles de los archivos login.php y uploader.php :

login.php

     

uploader.php

    

Haga una sesión y luego use esa sesión para hacer sus solicitudes –

 sessionObj = requests.session() sessionOj.get(...) # Do whatever ... 

Una sesión persiste tus cookies para futuras solicitudes.
Y use los parámetros posteriores para el nombre de usuario, la contraseña, ya que los parámetros son necesarios para iniciar sesión en login.php , no para autenticar la contraseña del nombre de usuario.
También use el parámetro de files para subir archivos. Así que el código final es –

 import requests sessionObj = requests.session() url1='http://www.abc.com/login.php' r = sessionObj.post(url1, params={'username':'usernamehere' , 'password':'password here'}) print r.status_code //msg:'200' filehandle = open('./tmp.txt') url2='http://www.abc.com/uploader.php' r = sessionObj.post(url2, data={},files = {'upload':filehandle}) print r.text 

Docs.