Python3(19):Python3 request下载文件代码(可以直接调用)

Python3(19):Python3 request下载文件代码(可以直接调用)

一、requests库下载和上传

使用Python中的requests库,你可以方便地进行下载和上传操作。以下是简单的示例:

import requests

url = 'https://example.com/file.zip'  # 替换为你要下载的文件的URL
response = requests.get(url)

if response.status_code == 200:
    with open('downloaded_file.zip', 'wb') as file:
        file.write(response.content)
    print('下载成功!')
else:
    print(f'下载失败,状态码: {response.status_code}')

上传文件

import requests

url = 'https://example.com/upload'  # 替换为你要上传的目标URL
files = {'file': open('local_file.txt', 'rb')}  # 替换为你要上传的本地文件路径

response = requests.post(url, files=files)

if response.status_code == 200:
    print('上传成功!')
else:
    print(f'上传失败,状态码: {response.status_code}')

在上传文件的例子中,files参数是一个字典,其中键是字段的名称,值是包含文件内容的打开的文件对象。确保替换示例中的URL和文件路径以符合你的实际需求。

二、Python3 下载文件示例

1、下载示例

# -*- coding: utf-8 -*-

"""
Create by HMF on 2021/02/05.
"""
import re,time
import requests
import json
from casb import Login


class Getfile(object):  #下载文件

    def __init__(self,url,headers):
        self.url=url
        self.headers=headers

    def getheaders(self):
        try:
            r = requests.head(self.url,headers=self.headers,verify=False)
            rs_headers = r.headers
            return rs_headers
        except Exception as e:
            print(e)

    def getfilename(self):  #获取默认下载文件名
            if 'Content-Disposition' in self.getheaders():
                file = self.getheaders().get('Content-Disposition')
                #filename = re.findall('filename="(.*)"',file)
                filename = re.split("=", file)[1]
            if filename:
                #print (filename)
                return filename

    def downfile(self,filename):  #下载文件
        self.r = requests.get(self.url,headers=self.headers, stream=True, verify=False)
        with open(filename, "wb") as code:
            for chunk in self.r.iter_content(chunk_size=1024): #边下载边存硬盘
                if chunk:
                    code.write(chunk)
        time.sleep(1)


if __name__ == '__main__':
    #登录
    host="10.1.1.181"
    lo=Login(host)
    accessToken =lo.login()
    print(accessToken)

    # 获取文件名$下载客户端
    down_url = "https://"+host+"/create-download?random=1612169115912"  # 目标下载链接
    header_all= {"Content-Type": "application/json"}
    header_all['Authorization'] = "Bearer " + accessToken
    #print (down_url,header_all)
    #r =Getfile(down_url,header_all).getheaders()   #获得head,调试用
    filename = Getfile(down_url, header_all).getfilename()
    print(filename)

    Getfile(down_url, header_all).downfile(filename)

2、登录代码:

# -*- coding: utf-8 -*-

"""
Create by HMF on 2021/02/05
"""
import requests
import json


class Login(object):  #登录
    def __init__(self,host):
        self.host=host

    def login(self):
        try:
            requests.packages.urllib3.disable_warnings()
            header = {"Content-Type": "application/json"}
            data = {"username": "YWWSWW", "password": "bGlhblNoaTIwMjA="}
            url = "https://"+self.host+"/login?random=1612094645702"
            #print (url)
            response = requests.post(url, data=json.dumps(data), headers=header, verify=False)
            apijson_login = response.json()  # 获取请求返回实际结果的json串值
            #print(apijson_login)
            accessToken = apijson_login["data"]["accessToken"]
            return accessToken
        except Exception as e:
            print(e)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁宁可可

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值