Comment télécharger des fichiers à l'aide de la bibliothèque de requêtes de Python ?
P粉071559609
P粉071559609 2023-08-16 18:44:37
0
2
597
<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>
P粉071559609
P粉071559609

répondre à tous(2)
P粉422227023

(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

url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}

r = requests.post(url, files=files)
r.text
P粉590428357

Si upload_file fait référence à un fichier, utilisez :

files = {'upload_file': open('file.txt','rb')}
values = {'DB': 'photcat', 'OUT': 'csv', 'SHORT': 'short'}

r = requests.post(url, files=files, data=values)

Ensuite, requests enverra un corps de requête POST de formulaire en plusieurs parties avec les requests将发送一个多部分表单POST请求体,其中upload_file字段设置为file.txtchamps définis sur le contenu du fichier file.txt.

Le nom du fichier sera inclus dans l'en-tête MIME du champ spécifique :

>>> import requests
>>> open('file.txt', 'wb')  # 创建一个空的演示文件
<_io.BufferedWriter name='file.txt'>
>>> files = {'upload_file': open('file.txt', 'rb')}
>>> print(requests.Request('POST', 'http://example.com', files=files).prepare().body.decode('ascii'))
--c226ce13d09842658ffbd31e0563c6bd
Content-Disposition: form-data; name="upload_file"; filename="file.txt"


--c226ce13d09842658ffbd31e0563c6bd--

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 filescarte, 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 :

files = {'upload_file': ('foobar.txt', open('file.txt','rb'), 'text/x-spam')}

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 que données. Vous souhaiterez peut-être également définir un en-tête Content-Type, sinon aucun en-tête ne sera défini. Voir Requêtes Python - Données POST à ​​partir d'un fichier.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!