web-dev-qa-db-fra.com

Entrée de ligne de commande en Python

Est-il possible d’exécuter d’abord le programme puis d’attendre l’entrée de l’utilisateur en ligne de commande .

Run...

Process...

Input from the user(in command line form)...

Process...
30
Viin

La signification du PO n’est pas claire (même après quelques allers-retours dans les commentaires), mais voici deux réponses aux interprétations possibles de la question:

Pour une entrée utilisateur interactive (ou des commandes piped ou une entrée redirigée)

Utilisez raw_input dans Python 2.x et input dans Python 3. (Celles-ci sont intégrées, vous n'avez donc pas besoin d'importer quoi que ce soit pour les utiliser; vous devez simplement utiliser le bon pour votre version de python.)

Par exemple:

user_input = raw_input("Some input please: ")

Plus de détails peuvent être trouvés ici .

Ainsi, par exemple, vous pourriez avoir un script qui ressemble à ceci

# First, do some work, to show -- as requested -- that
# the user input doesn't need to come first.
from __future__ import print_function
var1 = 'tok'
var2 = 'tik'+var1
print(var1, var2)

# Now ask for input
user_input = raw_input("Some input please: ") # or `input("Some...` in python 3

# Now do something with the above
print(user_input)

Si vous enregistrez ceci dans foo.py, vous pouvez simplement appeler le script à partir de la ligne de commande. Il imprimera tok tiktok, puis vous demandera de le saisir. Vous pouvez entrer bar baz (suivi de la touche Entrée) et imprimer bar baz. Voici à quoi cela ressemblerait:

$ python foo.py
tok tiktok
Some input please: bar baz
bar baz

Ici, $ représente l'invite de ligne de commande (si vous ne tapez pas réellement), et je clique sur Enter après avoir tapé bar baz quand il a demandé une entrée.

Pour les arguments de ligne de commande

Supposons que vous ayez un script nommé foo.py et que vous souhaitiez l'appeler avec les arguments bar et baz à partir de la ligne de commande, comme suit:

$ foo.py bar baz

(Encore une fois, $ représente l'invite de ligne de commande.) Ensuite, vous pouvez le faire avec les éléments suivants dans votre script:

import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]

Ici, la variable arg1 contiendra la chaîne 'bar', et arg2 contiendra 'baz'. L'objet sys.argv est juste une liste contenant tout ce qui se trouve sur la ligne de commande. Notez que sys.argv[0] est le nom du script. Et si, par exemple, vous voulez juste une liste unique de tous les arguments, vous utiliseriez sys.argv[1:].

77
Mike

Je prends juste l'entrée

the_input = raw_input("Enter input: ")

Et c'est tout. 

De plus, si vous voulez faire une liste d’entrées, vous pouvez faire quelque chose comme:

a = []

for x in xrange(1,10):
    a.append(raw_input("Enter Data: "))

Dans ce cas, vous serez invité à saisir des données 10 fois pour stocker 9 éléments dans une liste.

Sortie: 

Enter data: 2
Enter data: 3
Enter data: 4
Enter data: 5
Enter data: 7
Enter data: 3
Enter data: 8
Enter data: 22
Enter data: 5
>>> a
['2', '3', '4', '5', '7', '3', '8', '22', '5']

Vous pouvez chercher dans cette liste de manière fondamentale avec quelque chose comme (après avoir fait cette liste):

if '2' in a:
    print "Found"

autre: print "Pas trouvé."

Vous pouvez remplacer "2" par "raw_input ()" comme ceci:

if raw_input("Search for: ") in a:
    print "Found"
else: 
    print "Not found"

Prendre des données brutes d'un fichier d'entrée via l'interface en ligne de commande

Si vous souhaitez utiliser les entrées d'un fichier que vous alimentez en ligne de commande (ce qui est normalement nécessaire pour résoudre des problèmes de code dans les compétitions, comme Google Code Jam ou ACM/IBM ICPC):

exemple.py

while(True):
    line = raw_input()
    print "input data: %s" % line

Dans l'interface de ligne de commande:

example.py < input.txt

J'espère que cela pourra aider.

12
Mr_Spock

Si vous utilisez Python 3, raw_input a été remplacé par input

Exemple Python 3:

line = input('Enter a sentence:')
10
Mike Helmick

Commencez votre script avec la ligne suivante. Le script sera d'abord exécuté, puis vous obtiendrez l'invite de commande python. À ce stade, toutes les variables et fonctions seront disponibles pour une utilisation et des appels interactifs.

#!/usr/bin/env python -i

1
user8391127