Passer la variable entre les scripts Python
Je suis sûr que c'est très simple, mais j'ai été incapable de le faire fonctionner correctement. J'ai besoin d'avoir mon principal script python appel à un autre script python et de passer des variables à partir de l'original script le script que j'ai appelé
Donc, pour un exemple simpliste de mon premier script,
first.py
x = 5
import second
et mon deuxième script,
second.py
print x
et je m'attends à imprimer x mais j'ai
NameError: name 'x' is not defined
Je ne suis pas sûr si l'importation est le moyen de réaliser cela, mais si quelqu'un pourrait jeter de la lumière sur elle, de façon simple, ce serait génial!
merci,
MODIFIER
Après avoir lu les commentaires, j'ai pensé que je voudrais étendre sur ma question. Aswin Murugesh réponse résout le problème d'importation j'ai eu, toutefois, la solution n'a pas le résultat souhaité, comme je n'arrive pas à transmettre les éléments d'une liste de cette façon.
Dans first.py j'ai une liste dans laquelle j'ai procédé comme suit
for insert, (list) in enumerate(list, start =1):
'call second.py passing current list item'
Je voulais passer chaque élément de la liste pour un deuxième fichier python pour le web scraping), je ne voulais pas le faire dans first.py comme c'est censé être le principal "scan" du programme qui appelle d'autres programmes. J'espère que cela maintenant plus de sens.
Merci pour les commentaires jusqu'à présent.
source d'informationauteur DavidJB | 2013-04-16
Vous devez vous connecter pour publier un commentaire.
Lorsque vous appelez un script, le script appelant peut accéder à l'espace de noms du script appelé. (Dans votre cas, première pouvez accéder à l'espace de noms de deuxième.) Cependant, ce que vous demandez est l'inverse. Votre variable est définie dans le script d'appel, et que vous voulez le script appelé à l'accès de l'appelant de noms.
Une réponse est déjà dit dans ce post, dans la question elle-même:
Accéder à l'espace de noms de module appelant
Mais je vais l'expliquer ici, dans votre contexte.
Pour obtenir ce que vous voulez dans votre cas, commencer le script appelé par la ligne suivante:
Ce qui lui permet d'accéder à l'espace de noms (de toutes les variables et fonctions) de l'appelant script.
Alors maintenant, votre script d'appel est, comme avant:
et le script appelé est:
Cela devrait fonctionner correctement.
utiliser le script suivant:
first.py:
second.py
cette impression sera l'x de la valeur. Toujours importé les données de script doit être référencé avec le nom du script, comme dans
first.x
Essayez d'utiliser exec
Python3.5:
first.py
second.py
Vous pouvez également passer de x à l'aide de:
Ne sais pas si c'est un bon moyen.
Pour éviter de polluer l'espace de nom, importer les variables que vous voulez, individuellement:
from __main__ import x
et ainsi de suite. Sinon, vous allez finir avec les conflits de noms, vous n'étiez pas au courant de.