si __name__ == '__principaux__' appel de fonction
Je suis en train de travailler autour d'un problème que j'ai rencontré dans un morceau de code que j'ai besoin de construire. J'ai un module python que j'ai besoin d'être en mesure d'importer et de passer des arguments qui seront ensuite analysées par le module principal. Ce qui m'a été donnée ressemble à ceci:
#main.py
if __name__ == '__main__'
sys.argv[] #pass arguments if given and whatnot
Do stuff...
Ce dont j'ai besoin est d'ajouter un main()
fonction qui peut prendre en argument(s) et de les analyser, puis de les transmettre comme suit:
#main.py with def main()
def main(args):
#parse args
return args
if __name__ == '__main__':
sys.argv[] #pass arguments if given and whatnot
main(sys.argv)
Do stuff...
Pour résumer: j'ai besoin d'importer main.py et de les passer en arguments qui sont analysées par la main()
fonction et ensuite donner les informations renvoyées à la if __name_ == '__main_'
partie.
MODIFIER
Pour clarifier ce que je suis en train de faire
#hello_main.py
import main.py
print(main.main("Hello, main"))
AUSSI je veux toujours être en mesure de les appeler main.py de shell via
$: python main.py "Hello, main"
Préservant ainsi l' nom == principal
Est ce que je me demande même possible? J'ai passé la meilleure partie aujourd'hui des recherches sur cette question, car j'aimerais, si possible, de préserver la main.py le module que j'ai reçu.
Merci,
dmg
- Qu'avez-vous essayé? Quelles Erreurs avez-vous? S'il vous plaît dites-moi que vous n'avez pas perdre une journée entière de votre précieux mortalité "recherche", ce problème sans code en cours d'exécution.
if __name__ == '__main__':
partie n'est exécuté que lorsque le module est appelé, ce n'est pas importé.- Quel est le problème avec l'appel de votre
main
dans leif __name__ =='__main__'
avec les arguments passés par sys.argv? - Comment appelez-vous un module?
- l'appel est trop large, oui. Je voulais courir à partir du terminal ou execfile à partir d'un autre module.
- J'ai été en cours d'exécution de mon code à chaque fois que la recherche d'une solution. J'ai édité ma question pour, nous l'espérons clarifier certains de ce que je suis en train de faire.
- J'ai édité ma question à clarifier. Je fais appel principal(sys.argv) dans le cas d' nom == 'principal': mais rencontre ArgumentParser objet d'erreur n'a pas d'arguments lors de l'exécution de la main.py à partir du shell par juste de passage dans les arguments
Vous devez vous connecter pour publier un commentaire.
Dans un fichier de module, vous pouvez écrire
if __name__ == "__main__"
à obtenir des comportements lors de l'appel de ce fichier directement, par le biais de shell:On peut toujours utiliser la fonction lors de l'importation d'un autre fichier:
Ainsi, l'appel de
python test.py
entraînera"In test: test test "
, tout en appelantpython mymodule.py hello
entraînera"In mymodule: hello hello "
.Si j'ai bien compris votre question, vous voulez faire quelque chose comme ceci: