51 votes

PYTHON récupère des fichiers à partir de la ligne de commande

Comment obtenez-vous un nom de fichier à partir de la ligne de commande lorsque vous exécutez un code Python ? Comme si votre code ouvrait un fichier et lit la ligne, mais que le fichier varie à chaque fois que vous l'exécutez, comment dire :

 python code.py input.txt

donc le code analyse « input.txt » ? Que devriez-vous faire dans le code Python réel ? Je sais, c'est une question assez vague, mais je ne sais pas vraiment comment l'expliquer mieux.

44voto

kindall Points 60645

Une excellente option est le fileinput , qui récupérera tout ou partie des noms de fichiers à partir de la ligne de commande et donnera le contenu des fichiers spécifiés à votre script comme s'il s'agissait d'un seul gros fichier.

 import fileinput
for line in fileinput.input():
    process(line)

Plus d'informations ici .

40voto

agf Points 45052
import sys
filename = sys.argv[-1]

Cela obtiendra le dernier argument sur la ligne de commande. Si aucun argument n'est passé, ce sera le nom du script lui-même, car sys.argv[0] est le nom du programme en cours d'exécution.

31voto

Degraw Points 218

L'utilisation d'argparse est assez intuitive :

 import argparse
parser = argparse.ArgumentParser()                                               

parser.add_argument("--file", "-f", type=str, required=True)
args = parser.parse_args()

Maintenant, le nom du fichier se trouve dans :

 args.file

Vous n'avez qu'à exécuter le programme un peu différemment :

 python code.py -f input.txt

Prograide.com

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.

Powered by:

X