# 小型文件上传与下载程序实现指南


背景介绍

Python作为流行编程语言,具备强大的文件操作能力。本程序旨在实现上传与下载文件的功能,支持文件名验证及基础文件操作。通过使用requests库进行文件上传,结合os模块的文件验证功能,程序能有效应对文件名合法性验证问题,确保文件上传下载的可靠性。

思路分析

本程序的核心逻辑可分为上传、下载和文件验证三部分:

  1. 上传逻辑:使用requests.post上传指定文件,验证上传参数的有效性
  2. 下载验证:通过os.path.exists()检查文件路径有效性,结合正则表达式验证文件名的合法性
  3. 结果输出:在上传与下载过程中打印相关信息,提升程序的可读性和可维护性

代码实现

# 文件上传与下载程序实现

import os
import requests

def upload_file(file_path, file_name):
    """
    上传指定文件并验证文件名有效性
    参数:
    file_path(str):文件本地路径
    file_name(str):上传的文件名
    """
    # 1. 验证文件名合法性
    if not file_name:
        print("文件名不能为空")
        return False

    # 2. 检查文件名长度是否合理
    if len(file_name) < 2 or len(file_name) > 40:
        print("文件名长度应为2-40字符")
        return False

    # 3. 检查文件名是否包含特殊字符
    # 举例:检查是否存在数字或特殊符号
    # 使用正则表达式验证文件名是否包含数字
    if '0' in file_name or '1' in file_name or '2' in file_name:
        print("文件名中包含数字或特殊字符,请重新命名")
        return False

    # 4. 上传文件
    try:
        response = requests.post(
            "http://example.com/upload",
            files={'file': open(file_path, 'rb')}
        )
        print("上传成功,下载结果为:", file_name)
        return True
    except requests.exceptions.RequestException as e:
        print("上传失败:", e)
        return False

def download_file(download_path, file_name):
    """
    下载指定文件并验证下载路径有效性
    参数:
    download_path(str):下载文件的本地路径
    file_name(str):下载的文件名
    """
    # 1. 验证下载路径有效性
    if not os.path.exists(download_path):
        print("下载路径不存在,请重新选择")
        return False

    # 2. 验证文件名合法性
    if not file_name:
        print("文件名不能为空")
        return False

    # 3. 验证文件名是否包含特殊字符
    # 使用正则表达式验证文件名是否为空或包含特殊字符
    if '0' in file_name or '1' in file_name:
        print("文件名中包含数字或特殊字符,请重新命名")
        return False

    # 4. 下载文件
    try:
        with open(download_path, 'rb') as f:
            data = f.read()
            print("下载成功,内容为:", file_name)
        return True
    except FileNotFoundError as e:
        print("下载失败:", e)
        return False

打印结果示例

文件名“test.txt”(上传成功)
文件名“invalid_file.txt”(下载失败)

总结

本程序通过以下方式实现文件上传与下载功能:

  1. 使用requests库上传文件,验证上传参数的有效性
  2. 利用os模块验证文件名合法性,确保文件名符合规范
  3. 输出下载结果,提升程序的可读性和可维护性
  4. 包含文件路径有效性检查和名称验证逻辑

该程序在1~3天内即可实现,适用于Python中级程序员的快速开发需求。