J'ai écrit le même programme (fichier texte ouvert et contenu d'affichage) en C et C++. Je fais maintenant la même chose dans Python (sur une machine Linux).
Dans les programmes C, j'ai utilisé le code:
if (argc != 2) {
/* exit program */
}
Question: Qu'est-ce qui est utilisé dans Python pour vérifier le nombre d'arguments
#!/usr/bin/python
import sys
try:
in_file = open(sys.argv[1], "r")
except:
sys.exit("ERROR. Did you make a mistake in the spelling")
text = in_file.read()
print text
in_file.close()
Courant de sortie:
./python names.txt = Displays text file (correct)
./python nam = error message: stated from the sys.ext line (correct)
./python = error message: stated from the sys.ext line (wrong: want it to be a
separate error message stating *no file name input*)
Dans python une liste connaît sa longueur, vous pouvez donc simplement utiliser len(sys.argv)
pour obtenir le nombre d'éléments dans argv
.
J'utilise souvent un truc rapide pour lire un nombre fixe d'arguments à partir de la ligne de commande:
[filename] = sys.argv[1:]
in_file = open(filename) # Don't need the "r"
Cela assignera un argument à filename
et déclenchera une exception s'il n'y a pas un seul argument.
Vous feriez mieux de regarder argparse pour l'analyse des arguments.
http://docs.python.org/dev/library/argparse.html
Simplifie les choses, pas besoin de soulever des objets lourds vous-même.
dir(sys)
dit non. len(sys.argv)
fonctionne, mais en Python, il est préférable de demander pardon que de le
#!/usr/bin/python
import sys
try:
in_file = open(sys.argv[1], "r")
except:
sys.exit("ERROR. Can't read supplied filename.")
text = in_file.read()
print(text)
in_file.close()
fonctionne bien et est plus courte.
Si vous voulez quand même sortir, ce serait mieux:
#!/usr/bin/python
import sys
text = open(sys.argv[1], "r").read()
print(text)
J'utilise print()
pour que cela fonctionne dans la version 2.7 ainsi que Python 3.