2017-11-13 2 views
0

Ich habe Probleme mit einem CSV-Datei-Upload mit requests.post Methode in Python 3.Kann nicht CSV-Datei in Python

from requests.auth import HTTPBasicAuth 
import csv 
import requests 

user='myuser' 
pw='mypass' 
advertiserid='10550' 
campaignid='12394' 
url='http://example.example.com/api/edc/upload/'+advertiserid+'/'+campaignid+'/'+'?encoding=utf-8&fieldsep=%3B&decimalsep=.&date=DD%2FMM%2FYYYY&info=1&process=1' 
csv="myfile.csv" 

with open(csv, 'r') as f: 
    r = requests.post(url, files={csv: f}) 
    print(r) 

Der Ausgang ist 'Response [502]'

Jede Idee veröffentlichen von was könnte das Problem sein?

Vielen Dank!

+2

Nennen Sie nicht Ihre Datei 'csv', da dies bereits der Name einer Bibliothek ist, die Sie importieren. – collector

Antwort

0

Sie können die Dokumentation der Anforderungen Bibliothek verweisen hier: post-a-multipart-encoded-file

Ändern Sie Ihre Anfrage Linie:

r = requests.post(url, files={'report.csv': f}) 
+0

Ich lese es gerade. Ich habe versucht, die Zeile zu ändern aber ... der gleiche Fehler Danke trotzdem –

0
csv="myfile.csv" 
url='http://example.example.com/api/edc/upload/'+advertiserid+'/'+campaignid+'/'+'?encoding=utf-8&fieldsep=%3B&decimalsep=.&date=DD%2FMM%2FYYYY&info=1&process=1' 

files = { 'UPLOAD_FILE': open (csv, 'rb') } r = requests.post (URL, Dateien = Dateien)

+0

Danke, aber das gleiche Problem :( –

0

Versuchen Sie, es im Binärmodus zu öffnen? Und mit spezifischen 'text/csv' Mime-Typ?

with open(csv, 'rb') as f: 
    r = requests.post(url, files={'file': ('myfile.csv', f, 'text/csv', {'Expires': '0'})}) 
    print(r.text) 

Wenn es immer noch nicht funktioniert, versuchen Sie ohne die Binärdatei, aber immer noch mit dem Rest. Wenn es nicht funktioniert, drucken Sie die genaue Fehlermeldung. Und 502 (Schlechtes Gateway) bedeutet möglicherweise, dass Sie nicht die richtige URL angeben. (Sie zielen nicht auf example.com, richtig?

+0

Danke Samuel, immer noch nicht funktioniert ... Das ist der Fehler: 502 Proxy-Fehler

Proxy-Fehler

Der Proxy-Server hat eine ungültige Antwort von einem Upstream-Server erhalten.
Der Proxyserver konnte die Anforderung GET /api/edc/upload/10550/12394/ nicht verarbeiten.

Grund: Fehler von Remote-Server scheinen

+0

lesen, dass der Fehler nicht auf Ihrer Seite (wenn Sie die richtige URL sind Targeting). Wie lautet die vollständige URL, auf die Sie ausgerichtet sind? (Wenn das Internet zugänglich ist?) –

+0

Ich kann die URL aufgrund meiner Unternehmensrichtlinien nicht bereitstellen. Ich werde drüber nachdenken. Vielen Dank! –