Je voudrais lancer une commande dans Python Shell pour exécuter un fichier avec un argument.
Par exemple : execfile("abc.py")
mais comment ajouter 2 arguments ?
Je voudrais lancer une commande dans Python Shell pour exécuter un fichier avec un argument.
Par exemple : execfile("abc.py")
mais comment ajouter 2 arguments ?
Rien n'est transmis à abc.py
pour autant que je puisse dire, et je ne vois pas pourquoi ça devrait.
Lorsque mon fichier 'abc.py' a argparse
pour analyser les arguments d'entrée, j'ai obtenu une erreur avec cette méthode : trop peu d'arguments. J'ai exécuté python abc.py arg1 arg2
dans le terminal (cette méthode fonctionne sans erreur) et a ensuite imprimé le contenu du fichier sys.argv
par impression et a constaté que sys.argv
contient le nom 'abc.py'
comme premier élément de la liste. En fait, le code de l'utilisateur2757262 ci-dessous avec sys.argv = ['abc.py','arg1', 'arg2']
est celle qui a fonctionné !
execfile
exécute un fichier Python, mais en le chargeant, et non comme un script. Vous pouvez seulement passer des liaisons de variables, pas des arguments.
Si vous voulez exécuter un programme à partir de Python, utilisez subprocess.call
. Par exemple
import subprocess
subprocess.call(['./abc.py', arg1, arg2])
@geotheory Bien sûr que ça marche, mais c'est moins sûr et ça devient épineux quand on veut passer des chaînes de caractères avec des guillemets à un sous-processus.
Pouvez-vous expliquer ce que vous voulez dire par "le charger, pas comme un script" ? Quelle est la différence ?
Vous confondez le chargement d'un module dans le processus d'interprétation actuel et l'appel d'un script Python en externe.
Le premier peut être fait par import
le fichier qui vous intéresse. fichier d'exécution est similaire à l'importation, mais il évalue simplement le fichier plutôt que de créer un module à partir de celui-ci. Similaire au "sourcing" dans un shell script.
Ce dernier peut être réalisé à l'aide du module de sous-processus. Vous lancez une autre instance de l'interpréteur et lui passez les paramètres que vous voulez. Ceci est similaire à l'éjection d'un shell script en utilisant des backticks.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Comment le code dans le fichier que vous voulez exécuter récupère-t-il les arguments ?
0 votes
Je sais que c'est une vieille question, mais vous pourriez alternativement passer les valeurs pour exécuter un fichier py dans un fichier et juste l'ouvrir et lire les valeurs.