Como carregar arquivos usando solicitações Python

O Python fornece inúmeras bibliotecas que facilitam o transporte de dados através do HTTP. Devido ao seu uso generalizado na raspagem da Web, a Biblioteca de Aplicativos é uma das ferramentas Python mais comprovadas. Ele também é muito caro em se comunicar com os servidores. A biblioteca não apenas facilita o carregamento de arquivos, mas também em dados em formatos bem testados, como o JSON.

A carga de arquivo usando Python pode ser realizada usando vários métodos, usando aplicativos Python, ambiente Python-CGI ou Python SDK, etc.

Neste artigo, demonstraremos como carregar arquivos usando o módulo de aplicativos no Python. A assinatura do método post () e a biblioteca de solicitações serão discutidas primeiro no artigo. Em seguida, o procedimento será discutido para usar o pacote de solicitação para carregar um único arquivo. Não menos importante, carregamos vários arquivos com um único aplicativo.

Se você também deseja ver como é fácil implementar a funcionalidade de carga de arquivo usando o Python SDK, você pode aprender mais sobre isso aqui.

Carga de arquivo único usando a biblioteca de aplicativos Python

Esta parte se concentra em enviar os arquivos; Sua criação não é importante. Faça três arquivos com nomes my_file.txt, my_file2.txt e my_file3.txt a seguir.

Instalar a biblioteca de solicitações em nosso espaço de trabalho é a primeira coisa que devemos fazer. Recomenda -se instalar bibliotecas em um ambiente virtual, embora não seja necessário:

$ python3 -m Venv.

Ative o ambiente virtual para que possamos parar de afetar a instalação do Python Worldwide:

PS bin/ativar

Agora vamos usar o PIP para instalar a biblioteca de solicitações:

Pedidos de instalação $ pip

Para armazenar nosso código, crie um novo arquivo chamado sningo_uploader.py. Vamos começar a importar a biblioteca de solicitações nesse arquivo:

Solicitações de importação

Agora estamos preparados para fazer upload de um arquivo! Devemos abrir o arquivo e transmitir o conteúdo antes de publicá -lo. Além disso, não podemos aumentar um arquivo ao qual não temos acesso. A função aberta () será usada para isso.

A rota de arquivo e modo são os dois parâmetros que aceitam a função Open (). A rota do arquivo pode ser uma rota absoluta ou uma rota relacionada ao local onde o script é executado. Você pode simplesmente usar o nome do arquivo se estiver carregando um arquivo que está no mesmo diretório.

O valor “Leia binário”, indicado pela RB, será aceito pelo segundo argumento, modo. Esta opção informa ao computador que queremos abrir o arquivo no modo de leitura e que queremos usar seus dados binários:

test_file = aberto (“my_file.txt”, “rb”)

Lembre -se de que ler o arquivo no modo binário é crucial. O cabeçalho do comprimento do conteúdo, que é um número em bytes, é frequentemente determinado pela Biblioteca de Aplicativos. A biblioteca pode receber um número impreciso para a duração do conteúdo se o arquivo não for lido no modo bytes, o que daria origem a problemas quando o arquivo for enviado.

Enviaremos solicitações para o serviço HTTPBIN gratuito neste exemplo. Os desenvolvedores podem provar suas solicitações HTTP usando esta API. Vamos fazer uma variável para manter o endereço da Web onde carregaremos nossos arquivos:

test_url = “http; // httpbin.org/post”

Tudo está pronto para enviarmos o aplicativo. Para carregar o arquivo, usaremos o método post () da biblioteca de solicitações. O URL do servidor e a propriedade de arquivos são as duas entradas necessárias para executar esta função. Escreva o código a seguir para salvar a resposta em uma variável:

Test_Response = requits.post (test_url, arquivos = {“form_field_name”: test_file})

A propriedade do arquivo aceita um dicionário. O nome do campo do formulário que aceitará o arquivo é a chave. Bytes do arquivo aberto que você deseja carregar constitui o valor.

Em geral, observamos o Código do Estado HTTP da resposta para determinar se sua operação subsequente () foi bem -sucedida. Podemos aproveitar o campo test_url ok do objeto de resposta. Nesse caso, imprimiremos a resposta do servidor HTTP, que neste caso será simplesmente ecoado:

Sim test_res.ok:

Imprima (“Carregado com sucesso!”)

imprimir

mais:

Print (“Algo deu errado!”)

Vamos dar uma chance! Use o comando python para executar seu script no terminal:

python single_uploader.py

Sua partida seria semelhante a isso:

Carregamento total com sucesso!

{

“Args”: {},

“dados” : “” ,

“Records”: {

“Form_field_name”: “Este é o meu arquivo

Eu gosto do meu arquivo

},

“Formato” : {},

“Cabeçalhos”: {

“Aceitar” : “*/*” ,

“Aceite na codificação”: “gzip, deflate”,

“Longitude de conteúdo”: “189”,

“Tipo de conteúdo”: “multipart/formy-dados; limite = 53bb41eb09d784cedc62d521121269f8”,

“Host”: “httpbin.org”,

“Agente do usuário”: “Python-Requests/2.25.0”,

“X-AMZN-TRACE-ID”: “ROOT = 1-5FC3C190-5DEA2C7633A02BCF5E654C2B” ”

},

“JSON”: NULL,

“Origin”: “102.5.105.200”,

“Url”: “http; // httpbin.org/post”

}

Você pode garantir que o valor form_field_name corresponda ao valor em seu arquivo como uma verificação de segurança.

Carregar vários arquivos com a biblioteca de solicitações do Python

A principal diferença entre o uso de aplicativos para carregar vários arquivos e carregar um único arquivo é que usamos listas. Faça o seguinte código de configuração em um novo arquivo chamado multi_uploader.py:

Solicitações de importação

test_url = “http; // httpbin.org/post”

Agora faça uma variável semelhante a um dicionário chamado test_files que possui uma lista de nomes e arquivos:

test_files = {

“Test_file1”: aberto (“my_file.txt”, “rb”),

“Test_file2”: aberto (“my_file2.txt”, “rb”),

“Test_file3”: aberto (“my_file3.txt”, “rb”)

}

Conforme indicado acima, os nomes dos campos de formulário servem como chaves, enquanto os tamanhos dos arquivos servem como valores.

Nossas variáveis ​​de arquivo também podem ser criadas como uma lista de tuplas. Cada TUPLA inclui o nome do formulário de aceitação do arquivo e o tamanho do arquivo em bytes:

test_files = [(“test_file1”, aberto (“my_file.txt”, “rb”)),

(“Test_file2”, aberto (“my_fil_2.txt”, “rb”)),

(“Test_file3”, aberto (“my_file3.txt”, “rb”)]]]]

Escolha o que escolher, porque ambos são eficazes!

Você pode enviar o aplicativo e inspecionar a resposta assim que a lista de arquivos estiver pronta:

Test_Response = requits.post (test_url, arquivos = test_files)

Sim test_res.ok:

Imprima (“Carregado com sucesso!”)

imprimir

mais:

Print (“Algo deu errado!”)

Execute este script com o comando python:

$ Python multi_uploader.py

Você verá esta saída:

Carregamento total com sucesso!

{

“Args”: {},

“dados” : “” ,

“Records”: {

“Test_file1”: “Este é o meu arquivo

Eu gosto do meu arquivo

“Test_file2”: “toda a sua base pertence a nós

“Test_file3”: “Sou eu, Mario!

},

“Formato” : {},

“Cabeçalhos”: {

“Aceitar” : “*/*” ,

“Aceite na codificação”: “gzip, deflate”,

“Longitude de conteúdo”: “470”,

“Tipo de conteúdo”: “multipart/formy-dados; limite = 4111c551fb8c61fd14af07bd5df5bb76”

“Host”: “httpbin.org”,

“Agente do usuário”: “Python-Requests/2.25.0”,

“X-AMZN-TRACE-ID”: “raiz = 1-5FC3C744-30404A8B186CF91C7D239034”

},

“JSON”: NULL,

“Origin”: “102.5.105.200”,

“Url”: “http; // httpbin.org/post”

}

Bem feito! Com os aplicativos, você pode carregar os arquivos!

conclusão

Neste tutorial, aprendemos a usar o módulo de solicitação para carregar arquivos no Python. O método post () requer apenas alguns ajustes, independentemente de haver um ou mais arquivos envolvidos. Para garantir que nossas cobranças fossem bem -sucedidas, também revisamos nossas respostas.

Os comentários estão encerrados.