diff --git a/flask框架/flask 第一个应用.py b/flask框架/flask 第一个应用.py new file mode 100644 index 0000000..556043f --- /dev/null +++ b/flask框架/flask 第一个应用.py @@ -0,0 +1,32 @@ +from flask import Flask +from flask import render_template +from flask import request +from flask import make_response + +app = Flask(__name__) + +@app.route('/') # 路由 映射到根目录 +def hello_world(): + return 'Hello, World!' + +@app.route('/greet/') # 视图,有传参 +def greet(name): + return f'Hello, {name}!' + +@app.route('/submit', methods=['POST']) # 请求对象,定义了方法 +def submit(): + username = request.form.get('username') + return f'Hello, {username}!' + +@app.route('/custom_response') # 响应对象 +def custom_response(): + response = make_response('This is a custom response!') # 响应体 + response.headers['X-Custom-Header'] = 'Value' # 响应头 + return response + +@app.route('/hello/') # 使用模板渲染 +def hello(name): + return render_template('hello.html', name=name) + +if __name__ == '__main__': + app.run(debug=True) \ No newline at end of file diff --git a/flask框架/flask-wtf.py b/flask框架/flask-wtf.py new file mode 100644 index 0000000..0127f69 --- /dev/null +++ b/flask框架/flask-wtf.py @@ -0,0 +1,24 @@ +from flask import Flask, render_template +from flask_wtf import FlaskForm +from wtforms import StringField, SubmitField +from wtforms.validators import DataRequired, Email + +app = Flask(__name__) +app.secret_key = 'your-secret-key' # 开发用,生产请用环境变量 + +class MyForm(FlaskForm): + name = StringField('Name', validators=[DataRequired()]) + email = StringField('Email', validators=[DataRequired(), Email()]) # ✅ 用 StringField + Email() + submit = SubmitField('Submit') + +@app.route('/', methods=['GET', 'POST']) +def form(): + form = MyForm() + if form.validate_on_submit(): + name = form.name.data + email = form.email.data + return f'Name: {name}, Email: {email}' + return render_template('wtf_form.html', form=form) + +if __name__ == '__main__': + app.run(debug=True) \ No newline at end of file diff --git a/flask框架/flask.ipynb b/flask框架/flask.ipynb new file mode 100644 index 0000000..176f16a --- /dev/null +++ b/flask框架/flask.ipynb @@ -0,0 +1,84 @@ +{ + "cells": [ + { + "metadata": {}, + "cell_type": "markdown", + "source": "## 安装flask", + "id": "d08d0aec541e30fb" + }, + { + "cell_type": "code", + "id": "initial_id", + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2025-08-29T01:31:15.189520Z", + "start_time": "2025-08-29T01:30:52.483942Z" + } + }, + "source": "pip install flask", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting flask\r\n", + " Downloading flask-3.1.2-py3-none-any.whl.metadata (3.2 kB)\r\n", + "Collecting blinker>=1.9.0 (from flask)\r\n", + " Downloading blinker-1.9.0-py3-none-any.whl.metadata (1.6 kB)\r\n", + "Requirement already satisfied: click>=8.1.3 in /opt/conda/lib/python3.11/site-packages (from flask) (8.1.7)\r\n", + "Collecting itsdangerous>=2.2.0 (from flask)\r\n", + " Downloading itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB)\r\n", + "Requirement already satisfied: jinja2>=3.1.2 in /opt/conda/lib/python3.11/site-packages (from flask) (3.1.2)\r\n", + "Requirement already satisfied: markupsafe>=2.1.1 in /opt/conda/lib/python3.11/site-packages (from flask) (2.1.3)\r\n", + "Collecting werkzeug>=3.1.0 (from flask)\r\n", + " Downloading werkzeug-3.1.3-py3-none-any.whl.metadata (3.7 kB)\r\n", + "Downloading flask-3.1.2-py3-none-any.whl (103 kB)\r\n", + "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m103.3/103.3 kB\u001B[0m \u001B[31m421.7 kB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m00:01\u001B[0m00:01\u001B[0m\r\n", + "\u001B[?25hDownloading blinker-1.9.0-py3-none-any.whl (8.5 kB)\r\n", + "Downloading itsdangerous-2.2.0-py3-none-any.whl (16 kB)\r\n", + "Downloading werkzeug-3.1.3-py3-none-any.whl (224 kB)\r\n", + "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m224.5/224.5 kB\u001B[0m \u001B[31m1.1 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0ma \u001B[36m0:00:01\u001B[0m\r\n", + "\u001B[?25hInstalling collected packages: werkzeug, itsdangerous, blinker, flask\r\n", + " Attempting uninstall: blinker\r\n", + " Found existing installation: blinker 1.6.3\r\n", + " Uninstalling blinker-1.6.3:\r\n", + " Successfully uninstalled blinker-1.6.3\r\n", + "Successfully installed blinker-1.9.0 flask-3.1.2 itsdangerous-2.2.0 werkzeug-3.1.3\r\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "execution_count": 1 + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "", + "id": "f9af5a802cbd2abe" + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/flask框架/templates/form.html b/flask框架/templates/form.html new file mode 100644 index 0000000..43f6f36 --- /dev/null +++ b/flask框架/templates/form.html @@ -0,0 +1,17 @@ + + + + Form Example + + +
+ + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/flask框架/templates/hello.html b/flask框架/templates/hello.html new file mode 100644 index 0000000..07abb8c --- /dev/null +++ b/flask框架/templates/hello.html @@ -0,0 +1,9 @@ + + + + Hello + + +

Hello, {{ name }}!

+ + \ No newline at end of file diff --git a/flask框架/templates/upload.html b/flask框架/templates/upload.html new file mode 100644 index 0000000..3ab9919 --- /dev/null +++ b/flask框架/templates/upload.html @@ -0,0 +1,14 @@ + + + + Upload File + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/flask框架/templates/wtf_form.html b/flask框架/templates/wtf_form.html new file mode 100644 index 0000000..6c1e400 --- /dev/null +++ b/flask框架/templates/wtf_form.html @@ -0,0 +1,22 @@ + + + + Form Example + + +
+ {{ form.hidden_tag() }} +
+ {{ form.name.label }}
+ {{ form.name(size=32) }} +
+
+ {{ form.email.label }}
+ {{ form.email(size=32) }} +
+
+ {{ form.submit() }} +
+
+ + \ No newline at end of file diff --git a/flask框架/uploads/demo.py b/flask框架/uploads/demo.py new file mode 100644 index 0000000..291b227 --- /dev/null +++ b/flask框架/uploads/demo.py @@ -0,0 +1,16 @@ +import os,sys #导入模块 +def add_prefix_files(): #定义函数名称 + old_names = os.listdir( path ) #取路径下的文件名,生成列表 + for old_name in old_names: #遍历列表下的文件名 + # if old_name!= sys.argv[0]: #代码本身文件路径,防止脚本文件放在path路径下时,被一起重命名 + if old_name.endswith('.mp4'): #当文件名以.txt后缀结尾时 + old_name1=old_name.split(".")[0] + number = old_name1[-1] + name = old_name1[:1] + new_name =number+" "+name+".mp4" + os.rename(os.path.join(path,old_name),os.path.join(path,new_name)) #重命名文件 + print (old_name,"has been renamed successfully! New name is: ",new_name) #输出提示 + +if __name__ == '__main__': + path = f'D:\Program File data\mp4\半音阶口琴' #运行程序前,记得修改主文件夹路径! + add_prefix_files() #调用定义的函数,注意名称与定义的函数名一致 diff --git a/flask框架/文件上传.py b/flask框架/文件上传.py new file mode 100644 index 0000000..40d2e77 --- /dev/null +++ b/flask框架/文件上传.py @@ -0,0 +1,16 @@ +from flask import Flask, request, redirect, url_for + +app = Flask(__name__) +app.secret_key = 'your_secret_key' + +@app.route('/upload', methods=['POST']) +def upload(): + file = request.files.get('file') + if file: + filename = file.filename + file.save(f'uploads/{filename}') + return f'File uploaded successfully: {filename}' + return 'No file uploaded' + +if __name__ == '__main__': + app.run(debug=True) \ No newline at end of file diff --git a/flask框架/脚本.ipynb b/flask框架/脚本.ipynb new file mode 100644 index 0000000..95b330d --- /dev/null +++ b/flask框架/脚本.ipynb @@ -0,0 +1,74 @@ +{ + "cells": [ + { + "metadata": {}, + "cell_type": "markdown", + "source": "### 发送文件", + "id": "259126b0b53fdd9f" + }, + { + "cell_type": "code", + "id": "initial_id", + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2025-09-02T09:10:07.287763Z", + "start_time": "2025-09-02T09:10:07.276787Z" + } + }, + "source": [ + "import requests\n", + "\n", + "url = 'http://127.0.0.1:5000/upload' # 你的 Flask 服务地址\n", + "file_path = 'D:\\Idea Project\\python\\demo.py' # 要上传的文件路径\n", + "\n", + "with open(file_path, 'rb') as f:\n", + " files = {'file': f}\n", + " response = requests.post(url, files=files)\n", + "\n", + "print(response.text)" + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "File uploaded successfully: demo.py\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "<>:4: SyntaxWarning: invalid escape sequence '\\I'\n", + "<>:4: SyntaxWarning: invalid escape sequence '\\I'\n", + "C:\\Users\\zy187\\AppData\\Local\\Temp\\ipykernel_3844\\645906349.py:4: SyntaxWarning: invalid escape sequence '\\I'\n", + " file_path = 'D:\\Idea Project\\python\\demo.py' # 要上传的文件路径\n" + ] + } + ], + "execution_count": 5 + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/flask框架/表单处理.py b/flask框架/表单处理.py new file mode 100644 index 0000000..534aa6f --- /dev/null +++ b/flask框架/表单处理.py @@ -0,0 +1,16 @@ +from flask import Flask,render_template,request + +app = Flask(__name__) + +@app.route('/') +def form(): # 展示表格 + return render_template('form.html') + +@app.route('/submit',methods=['POST']) +def submit(): #提交表格 + name = request.form.get('name') + email = request.form.get('email') + return f'Name:{name},Email:{email}' + +if __name__ == '__main__': + app.run(debug=True) \ No newline at end of file diff --git a/python爬虫/selenium窗口之间的切换.py b/python爬虫/selenium窗口之间的切换.py index 3fc23ff..dcec012 100644 --- a/python爬虫/selenium窗口之间的切换.py +++ b/python爬虫/selenium窗口之间的切换.py @@ -2,7 +2,7 @@ from selenium.webdriver import Chrome, Keys from selenium.webdriver.common.by import By import time -chrom_dirverpath = 'C:\Users\zy187\IdeaProjects\python\venv\Scripts\chromedriver.exe' +chrom_dirverpath = r'C:\Users\zy187\IdeaProjects\python\venv\Scripts\chromedriver.exe' web = Chrome(chromedriver_path=chrom_dirverpath) # web.get('http://lagou.com') diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..2fd2df6 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,22 @@ +aiofiles==24.1.0 +aiohttp==3.12.15 +beautifulsoup4==4.13.5 +contractions==0.1.73 +itemadapter==0.12.1 +lxml==6.0.1 +nltk==3.9.1 +numpy==2.3.2 +pyecharts==2.0.8 +pymongo==4.14.1 +pymysql==1.1.2 +pyspark==4.0.0 +pytest==8.4.1 +redis==6.4.0 +Requests==2.32.5 +selenium==4.35.0 +self==2020.12.3 +setuptools==78.1.1 +six==1.17.0 +spacy==3.8.7 +Twisted==25.5.0 +w3lib==2.3.1