J'ai un certain nombre de python que j'ai sauvegardés sur mon ordinateur). Par curiosité, j'ai créé un fichier html comportant un seul bouton. Au lieu d'aller dans le terminal et d'exécuter python <path to script>
_, Je voudrais faire en sorte que lorsque ce bouton est cliqué, l’un de mes scripts python) est lancé. Est-ce possible/comment peut-on le faire?
à titre d'exemple, nous appellerons le script à exécuter MYSCRIPT.py. J'ai fait quelques recherches mais je n'ai rien trouvé de prometteur. Je suis conscient que le code suivant est incorrect, mais juste pour un point de départ, voici mon fichier HTML.
<!DOCTYPE html>
<html>
<body>
<head>
<input type="button" id='script' name="scriptbutton" value=" Run Script " onclick="exec('python MYSCRIPT.py');">
</head>
</body>
</html>
Puisque vous avez demandé un moyen de compléter ceci dans une page HTML
, je réponds à cela. Je pense qu'il n'est pas nécessaire de mentionner les avertissements sévères et les implications qui en découleraient. J'espère que vous connaissez la sécurité de votre script .py
Mieux que moi :-)
J'utiliserais la fonction .ajax()
dans la bibliothèque jQuery
. Cela vous permettra d’appeler votre script Python
tant que le script se trouve dans le répertoire html accessible au public ... Cela dit, c’est la partie où je vous dis de respecter les mesures de sécurité. ...
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input type="button" id='script' name="scriptbutton" value=" Run Script " onclick="goPython()">
<script src="http://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script>
function goPython(){
$.ajax({
url: "MYSCRIPT.py",
context: document.body
}).done(function() {
alert('finished python script');;
});
}
</script>
</body>
</html>
De plus .. Il est intéressant de noter que votre script devra avoir les autorisations appropriées pour, par exemple, l'utilisateur www-data
Pour pouvoir l'exécuter ... Un chmod
et/ou un chown
peut être nécessaire.
Cela nécessiterait la connaissance d'une langue de site Web backend.
Heureusement, Flask Library de Python est un langage de base approprié pour le projet en cours.
Départ cette réponse à partir d'un autre thread.
Il existe différentes façons de le faire, une technique très simple avec la sécurité en tête, ici peut vous aider
1. Vous devez d'abord installer un flacon pip install flask
dans l'invite de commande, qui est un microframework python), n'ayez pas peur d'avoir besoin d'une autre connaissance préalable pour apprendre cela, c'est très simple et avec seulement quelques lignes de code. Si vous souhaitez apprendre Flask rapidement pour un novice complet, voici le tutoriel que j’apprends aussi Tutoriel Flask pour débutant (YouTube)
2.Créez un nouveau dossier
- Le premier fichier sera server.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/my-link/')
def my_link():
print ('I got clicked!')
return 'Click.'
if __name__ == '__main__':
app.run(debug=True)
-2nd créez un autre sous-dossier dans le dossier précédent et nommez-le comme template le fichier sera votre fichier html.
index.html
<!doctype html>
<head><title>Test</title>
<meta charset=utf-8> </head>
<body>
<h1>My Website</h1>
<form action="/my-link/">
<input type="submit" value="Click me" />
</form>
<button> <a href="/my-link/">Click me</a></button>
</body>
3. . Pour exécuter, ouvrez Invite de commandes dans le répertoire Nouveau dossier, tapez python server.py
pour exécuter le script, puis accédez au type de navigateur localhost:5000
, alors vous verrez le bouton. Vous pouvez cliquer sur et router vers le fichier de script de destination que vous avez créé.
J'espère que cela vous aidera. Je vous remercie.
C'est décourageant et problématique mais faisable. Ce dont vous avez besoin, c'est d'un schéma d'URI personnalisé Vous devez vous enregistrer et le configurer sur votre machine, puis accrocher une URL avec ce schéma au bouton.
Le schéma d'URI est la partie avant ://
dans un URI. Les schémas d'URI standard sont par exemple https
ou ftp
ou file
. Mais il y a des coutumes comme FX. mongodb
. Ce dont vous avez besoin est votre propre, par exemple. mypythonscript
. Il peut être configuré pour exécuter le script ou même simplement python avec le nom du script dans les paramètres, etc.). Il s’agit bien entendu d’un compromis entre flexibilité et sécurité.
Vous pouvez trouver plus de détails dans les liens:
https://msdn.Microsoft.com/en-us/library/aa767914 (v = vs.85) .aspx
EDIT: Ajout de plus de détails sur ce qu'est un schéma personnalisé.
Je l'ai fait exactement sous Windows. J'ai une page .html locale que j'utilise comme "tableau de bord" pour tout mon travail actuel. En plus des liens habituels, j'ai pu ajouter des liens cliquables ouvrant des documents MS-Word, des feuilles de calcul Excel, ouvrir mon IDE, ssh sur des serveurs, etc. C'est un peu compliqué, mais voici comment je l'ai fait ...
Tout d'abord, mettez à jour le registre Windows. Votre navigateur gère les protocoles habituels tels que http, https, ftp. Vous pouvez définir votre propre protocole et un gestionnaire à appeler lorsqu'un lien de ce type de protocole est cliqué. Voici la configuration (exécutée avec regedit
)
[HKEY_CLASSES_ROOT\mydb]
@="URL:MyDB Document"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\mydb\Shell]
@="open"
[HKEY_CLASSES_ROOT\mydb\Shell\open]
[HKEY_CLASSES_ROOT\mydb\Shell\open\command]
@="wscript C:\_opt\Dashboard\Dashboard.vbs \"%1\""
Avec cela, quand j'ai un lien comme <a href="mydb:open:ProjectX.docx">ProjectX</a>
, en cliquant dessus, vous invoquerez C:\_opt\Dashboard\Dashboard.vbs
en lui transmettant le paramètre de ligne de commande open:ProjectX.docx
. Mon code VBS examine ce paramètre et fait le nécessaire (dans ce cas, puisqu'il se termine par .docx, il appelle MS-Word avec ProjectX.docx
comme paramètre.
Maintenant, j’ai écrit mon gestionnaire dans VBS uniquement parce que c’est un code très ancien (environ 15 ans). Je ne l'ai pas essayé, mais vous pourrez peut-être écrire un gestionnaire Python, Dashboard.py
, au lieu. Je vous laisse le soin d'écrire votre propre gestionnaire. Pour vos scripts, votre lien pourrait être href="mydb:runpy:whatever.py"
(le runpy:
Le préfixe indique à votre handle de s’exécuter avec Python).
Le meilleur moyen consiste à utiliser un Python Web Frame Work, vous pouvez choisir Django/Flask . Je vous suggère d'utiliser Django parce que c'est plus puissant. Voici comment procéder étape par étape:
pip install Django
django-admin createproject buttonpython
vous devez ensuite créer un nom de fichier views.py dans le répertoire buttonpython.
écrivez ci-dessous le code dans views.py:
from Django.http import HttpResponse
def sample(request):
#your python script code
output=code output
return HttpResponse(output)
Une fois terminé, accédez à urls.py et ajoutez cette section
from . import views
path('', include('blog.urls')),
Maintenant, allez dans le répertoire parent et exécutez manage.py
python manage.py runserver 127.0.0.1:8001
Guide étape par étape en détail: Exécuter Python en cliquant sur le bouton HTML