Python3下载文件

使用python完成下载资源到本地的操作

效果展示
请添加图片描述

code

  • 主模块
# -*- coding: utf-8 -*-

import downLoad#下载模块
import fileUtils#文件模块

rootPath = "https://domainName/download/"#资源链接-资源名
fileName = "tank.apk"#文件名
dst = "/Users/vscodeWork/python/"#本地需要存的文件路径
def solve_files():
    fileUtils.mkdirs(fileUtils.filedir(dst+fileName))
    if fileUtils.exists(dst+fileName):
        fileUtils.deleteFile(dst+fileName)
    try:
        downLoad.downloadFile(rootPath+fileName,dst)
    except Exception as e:
        print(str(e))

def main():
    solve_files()

main()
  • 资源下载模块
# -*- coding: utf-8 -*-
# pip安装 - 安装requests模块
# sudo python3 -m pip install --upgrade pip
# sudo pip3 install requests
import os
import sys
try:
    import requests
except Exception as e:
    print('引用[requests]库错误,请依次执行如下命令安装:')
    print('sudo python3 -m pip install --upgrade pip')
    print('sudo pip3 install requests')
    sys.exit(1)
import fileUtils

def get(url, params=None, headers=None):
    # headers = {'applicationkey': 'cc-admin'}
    # r = requests.get(url, headers=headers, params=params)
    r = requests.get(url, headers=headers, params=params)
    if int(r.status_code) == 200:
        return r.content
    else:
        raise Exception("请求接口(GET)错误码:" + str(r.status_code) + " " + url)


def post(url, params=None):
    r = requests.post(url, data=params)
    if r.status_code == 2010:
        return r.content
    else:
        raise Exception("请求接口(POST)错误码:" + str(r.status_code) + " " + url)


def downloadFile(url, dstDirectory=None, dstFile=None):
    r = requests.get(url)
    if r.status_code == 200:
        if dstFile == None:
            dstFile = dstDirectory + os.path.sep + \
                fileUtils.filebasename(url)
            dstFile = os.path.abspath(dstFile)
        # print("dstFile:" + dstFile)
        stream = open(dstFile, 'wb')
        stream.write(r.content)
        stream.close()
    else:
        raise Exception("下载文件错误码:" + str(r.status_code) + " " + url)

  • 文件IO模块
# coding=utf-8
import os
import io
import time
import codecs
import shutil
import hashlib


def mkdirs(path):
    if not os.path.exists(path):
        os.makedirs(path)


def rename(src, dst):
    if not os.path.exists(src):
        return
    ddirname = os.path.dirname(dst)
    if not os.path.exists(ddirname):
        os.makedirs(ddirname)
    os.rename(src, dst)


def copyFile(src, dst):
    dirname = os.path.dirname(dst)
    if not os.path.exists(dirname):
        os.makedirs(dirname)
    shutil.copy(src, dst)


def copyDirectory(src, dst):
    if not os.path.exists(dst):
        os.makedirs(dst)

    if os.path.exists(src):
        
        for root, _, files in os.walk(src):
            for file in files:
                src_file = os.path.join(root, file)
                dst_file = os.path.join(dst, os.path.relpath(src_file, src))
                copyFile(src_file, dst_file)


def recursiveDirectory(path, includeFunc=None):
    listFile = []
    if not os.path.exists(path):
        return
    for root, _, files in os.walk(path):
        for file in files:
            filepath = os.path.join(root, file)
            if includeFunc == None or includeFunc(filepath):
                listFile.append(filepath)
            # print "file:", os.path.join(root, file)
    return listFile


def deleteFile(filename):
    try:
        os.remove(filename)
        return True
    except Exception as e:
        print(e)
    return False


def deleteDirectory(path):
    for root, directories, files in os.walk(path, topdown=False):
        for file in files:
            os.remove(os.path.join(root, file))
        for directory in directories:
            os.rmdir(os.path.join(root, directory))
    if os.path.isdir(path):
        os.rmdir(path)


def readFile(filename):
    if not os.path.exists(filename):
        return
    file = open(filename, "r")
    content = file.read()
    file.close()
    return content


def saveFile(filename, content):
    try:
        file = open(filename, 'w+')
        file.write(content)
        file.close()
    except Exception as e:
        raise Exception("写文件失败:" + filename + "\t" + str(e))


def exists(filename):
    return os.path.exists(filename)


def readFileWithUTF8(filename):
    if not os.path.exists(filename):
        return
    file = open(filename, "rb")
    content = file.read().decode('utf-8')
    file.close()
    return content


def readFileWithGBK(filename):
    if not os.path.exists(filename):
        return
    file = io.open(filename, "r", encoding='gbk')
    content = file.read()
    file.close()
    return content


def writeFile(filename, content):
    dirname = os.path.dirname(filename)
    if not os.path.exists(dirname):
        os.makedirs(dirname)
        return
    # file = open(filename, "w+", 'utf-8')
    # file.write(content)
    file = codecs.open(filename, "w+", 'utf-8')
    file.write(content.decode('unicode_escape'))
    file.close()


def writeFileUTF8(filename, content):
    dirname = os.path.dirname(filename)
    if not os.path.exists(dirname):
        os.makedirs(dirname)
        return
    file = codecs.open(filename, "w+", 'utf-8')
    file.write(content)
    file.close()


def md5(filename):
    if not os.path.exists(filename):
        return
    m = hashlib.md5()
    with open(filename) as f:
        while True:
            data = f.read(4096)
            if len(data) == 0:
                break
            m.update(data)
    return m.hexdigest()


def md5WithBuffer(buffer):
    m = hashlib.md5()
    m.update(buffer)
    return m.hexdigest()


def size(filename):
    if not os.path.exists(filename):
        return
    return os.path.getsize(filename)


def md5Random(extra=1):
    now = int(round(time.time() * 1000))
    m = hashlib.md5()
    m.update(str(now) + extra)
    return m.hexdigest()


def now():
    return int(round(time.time() * 1000))


# 文件扩展相关
# 路径分隔符:os.path.sep
# 参数:abc/aaa.json
# 返回:aaa.json
def filebasename(path):
    _, file = os.path.split(path)
    # basename = os.path.basename(path)
    return file


# 参数:abc/aaa.json
# 返回:.json
def fileext(path):
    _, ext = os.path.splitext(path)
    return ext


def filedir(path):
    dir, _ = os.path.split(path)
    # dir = os.path.dirname(path)
    return dir

接着在终端使用python3 主模块名.py运行即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小蟹 !

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值