背景介绍
Python作为流行编程语言,具备强大的文件操作能力。本程序旨在实现上传与下载文件的功能,支持文件名验证及基础文件操作。通过使用requests库进行文件上传,结合os模块的文件验证功能,程序能有效应对文件名合法性验证问题,确保文件上传下载的可靠性。
思路分析
本程序的核心逻辑可分为上传、下载和文件验证三部分:
- 上传逻辑:使用
requests.post上传指定文件,验证上传参数的有效性 - 下载验证:通过
os.path.exists()检查文件路径有效性,结合正则表达式验证文件名的合法性 - 结果输出:在上传与下载过程中打印相关信息,提升程序的可读性和可维护性
代码实现
# 文件上传与下载程序实现
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”(下载失败)
总结
本程序通过以下方式实现文件上传与下载功能:
- 使用
requests库上传文件,验证上传参数的有效性 - 利用
os模块验证文件名合法性,确保文件名符合规范 - 输出下载结果,提升程序的可读性和可维护性
- 包含文件路径有效性检查和名称验证逻辑
该程序在1~3天内即可实现,适用于Python中级程序员的快速开发需求。