Ich habe das gleiche Programm (offene Textdatei und Inhalt anzeigen) in C und C ++ geschrieben. Jetzt mache ich dasselbe in Python (auf einem Linux-Rechner).
In den C-Programmen habe ich den Code verwendet:
if (argc != 2) {
/* exit program */
}
Frage: Was wird in Python verwendet, um die Anzahl der Argumente zu überprüfen
#!/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()
Aktueller Output:
./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*)
sys.argc = property(lambda self: len(self.argv)).__get__(sys, sys.__class__)
wennAntworten:
In Python kennt eine Liste ihre Länge, sodass Sie nur
len(sys.argv)
die Anzahl der Elemente ermitteln könnenargv
.quelle
Ich verwende oft einen Quick-n-Dirty-Trick, um eine feste Anzahl von Argumenten aus der Befehlszeile zu lesen:
[filename] = sys.argv[1:] in_file = open(filename) # Don't need the "r"
Dadurch wird das eine Argument zugewiesen
filename
und eine Ausnahme ausgelöst, wenn nicht genau ein Argument vorhanden ist.quelle
Sie sollten sich Argparse besser ansehen, um Argumente zu analysieren.
http://docs.python.org/dev/library/argparse.html
Macht es einfach, Sie müssen das schwere Heben nicht selbst ausführen.
quelle
dir(sys)
sagt neinlen(sys.argv)
funktioniert, aber in Python ist es besser, um Vergebung zu bitten als um Erlaubnis#!/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()
funktioniert gut und ist kürzer.
Wenn Sie trotzdem beenden, ist dies besser:
#!/usr/bin/python import sys text = open(sys.argv[1], "r").read() print(text)
Ich benutze,
print()
damit es sowohl in 2.7 als auch in Python 3 funktioniert.quelle