用python写一个服务并注释,开放一个接口http://192.168.1.226:5000/dezip,启动后,前端访问该接口时会输入堆场号,然后前端会上传duichang.zip压缩文件夹,程序接收到dch并将其作为参数,后将收到的压缩文件解压,解压后,将解压文件中的子文件夹复制到当前目录下的"'dch'+duichang"文件夹中,后将解压文件夹和压缩文件夹删除。最后给出前端与接口对应的网页代码
时间: 2023-06-23 22:08:11 浏览: 74
Lunar_project:Gym.openai.comenvsLunarLander-v2的解决方案
以下是Python的代码实现:
```python
from flask import Flask, request, jsonify
import os
import shutil
import zipfile
app = Flask(__name__)
@app.route('/dezip', methods=['POST'])
def dezip():
dch = request.form['dch']
f = request.files['file']
f.save(f.filename)
with zipfile.ZipFile(f.filename, 'r') as zip_ref:
zip_ref.extractall(dch)
new_folder = dch + f.filename.replace('.zip', '')
os.mkdir(new_folder)
for item in os.listdir(dch):
if os.path.isdir(os.path.join(dch, item)):
shutil.move(os.path.join(dch, item), os.path.join(new_folder, item))
os.remove(f.filename)
shutil.rmtree(dch)
return jsonify({'message': 'Dezip success!'})
if __name__ == '__main__':
app.run(host='192.168.1.226', port=5000)
```
具体实现流程如下:
1. 在Flask中添加一个接口/dezip,启动后可以通过http://192.168.1.226:5000/dezip进行访问。
2. 接收前端传过来的堆场号dch和压缩文件。
3. 将压缩文件保存到服务器中。
4. 使用zipfile模块对文件进行解压。
5. 创建一个新的文件夹,将解压文件中的子文件夹复制到新文件夹中。
6. 删除解压文件夹和压缩文件。
7. 返回成功信息。
以下是对代码的注释:
```python
from flask import Flask, request, jsonify
import os
import shutil
import zipfile
app = Flask(__name__)
# 定义/dezip接口
@app.route('/dezip', methods=['POST'])
def dezip():
# 接收前端传过来的堆场号
dch = request.form['dch']
# 接收前端传过来的文件
f = request.files['file']
# 保存文件到服务器
f.save(f.filename)
# 解压文件
with zipfile.ZipFile(f.filename, 'r') as zip_ref:
zip_ref.extractall(dch)
# 创建新文件夹
new_folder = dch + f.filename.replace('.zip', '')
os.mkdir(new_folder)
# 复制子文件夹到新文件夹中
for item in os.listdir(dch):
if os.path.isdir(os.path.join(dch, item)):
shutil.move(os.path.join(dch, item), os.path.join(new_folder, item))
# 删除解压文件夹和压缩文件
os.remove(f.filename)
shutil.rmtree(dch)
# 返回成功信息
return jsonify({'message': 'Dezip success!'})
if __name__ == '__main__':
# 启动服务
app.run(host='192.168.1.226', port=5000)
```
以下是前端页面的代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Dezip</title>
</head>
<body>
<form action="http://192.168.1.226:5000/dezip" method="post" enctype="multipart/form-data">
<label for="dch">堆场号:</label>
<input type="text" name="dch" id="dch"><br><br>
<label for="file">上传压缩文件:</label>
<input type="file" name="file" id="file"><br><br>
<input type="submit" value="解压">
</form>
</body>
</html>
```
通过访问http://192.168.1.226:5000/dezip可以上传一个压缩文件,并解压到指定的堆场目录中。同时,前端会输入堆场号和上传的压缩文件。
阅读全文