Comment télécharger des fichiers à l'aide de la bibliothèque de requêtes de Python ?
P粉071559609
2023-08-16 18:44:37
<p>J'utilise la bibliothèque de requêtes de Python pour effectuer une tâche simple, qui consiste à télécharger un fichier. J'ai effectué une recherche sur Stack Overflow et personne ne semble avoir le même problème, où le fichier n'est pas reçu par le serveur : </p>
<pre class="brush:php;toolbar:false;">requêtes d'importation
url='http://nesssi.cacr.caltech.edu/cgi-bin/getmulticonedb_release2.cgi/post'
files={'files': open('file.txt','rb')}
valeurs={'upload_file' : 'file.txt' , 'DB':'photcat' , 'OUT':'csv' , 'SHORT':'short'}
r=requests.post(url,files=files,data=values)</pre>
<p>J'ai renseigné la valeur du mot-clé 'upload_file' avec mon nom de fichier car si je le laissais vide, il apparaîtrait : </p>
<pre class="brush:php;toolbar:false;">Erreur - Vous devez sélectionner un fichier à télécharger ! ≪/pré>
<p>Maintenant, j'obtiens : </p>
<pre class="brush:php;toolbar:false;">La taille du fichier file.txt est en octets, téléchargé avec succès !
Résultats du service de requête : il y a 0 ligne au total. ≪/pré>
<p>Cela se produit uniquement si le fichier est vide. Je ne sais donc pas comment réussir à envoyer mon fichier. Je sais que le fichier est valide car si je remplis le formulaire manuellement et que je visite le site, il renvoie une belle liste de correspondances, ce qui correspond exactement à ce que je souhaite. J'apprécie vraiment tous les conseils. </p>
<p>Quelques autres sujets liés (mais qui ne résolvent pas mon problème) : </p>
<ul>
<li>Utilisez un script Python pour envoyer des fichiers via POST</li>
<li>http://docs.python-requests.org/en/latest/user/quickstart/#response-content</li>
<li>Utiliser des requêtes pour télécharger des fichiers et envoyer des données supplémentaires</li>
<li>http://docs.python-requests.org/en/latest/user/advanced/#body-content-workflow</li>
</ul><p><br /></p>
(2018) La nouvelle bibliothèque de requêtes Python simplifie ce processus, nous pouvons utiliser la variable 'files' pour indiquer que nous voulons télécharger un fichier codé en plusieurs parties
Si
upload_file
fait référence à un fichier, utilisez :Ensuite,
requests
enverra un corps de requête POST de formulaire en plusieurs parties avec lesrequests
将发送一个多部分表单POST请求体,其中upload_file
字段设置为file.txt
champs définis sur le contenu du fichierfile.txt
.Le nom du fichier sera inclus dans l'en-tête MIME du champ spécifique :
Veuillez faire attention aux
filename="file.txt"
paramètres.Si vous avez besoin de plus de contrôle, vous pouvez utiliser des tuples comme valeurs de
files
carte, la longueur du tuple doit être comprise entre 2 et 4. Le premier élément est le nom du fichier, suivi du contenu, incluant éventuellement un mappage des en-têtes de type de contenu et d'autres en-têtes :Cela définira un nom de fichier et un type de contenu alternatifs, en omettant les en-têtes facultatifs.
Si vous souhaitez que l'intégralité du corps de la requête POST provienne d'un fichier (aucun autre champ n'est spécifié), n'utilisez pas le paramètre
files
参数,直接将文件作为data
进行POST。您可能还希望设置一个Content-Type
et POSTez le fichier directement en tant quedonnées
. Vous souhaiterez peut-être également définir un en-têteContent-Type
, sinon aucun en-tête ne sera défini. Voir Requêtes Python - Données POST à partir d'un fichier.