Python Language
Grundlegende Eingabe und Ausgabe
Suche…
Input () und raw_input () verwenden
raw_input
wartet darauf, dass der Benutzer Text raw_input
und das Ergebnis als String raw_input
.
foo = raw_input("Put a message here that asks the user for input")
Im obigen Beispiel speichert foo
die Eingaben des Benutzers.
input
wartet, bis der Benutzer Text eingibt und das Ergebnis als String zurückgibt.
foo = input("Put a message here that asks the user for input")
Im obigen Beispiel speichert foo
die Eingaben des Benutzers.
Verwendung der Druckfunktion
In Python 3 hat die Druckfunktion die Form einer Funktion:
print("This string will be displayed in the output")
# This string will be displayed in the output
print("You can print \n escape characters too.")
# You can print escape characters too.
In Python 2 war print ursprünglich eine Anweisung (siehe unten).
print "This string will be displayed in the output"
# This string will be displayed in the output
print "You can print \n escape characters too."
# You can print escape characters too.
Hinweis: Bei Verwendung from __future__ import print_function
in Python 2 können Benutzer die Funktion print()
wie Python 3-Code verwenden. Dies ist nur in Python 2.6 und höher verfügbar.
Funktion, um den Benutzer zur Eingabe einer Nummer aufzufordern
def input_number(msg, err_msg=None):
while True:
try:
return float(raw_input(msg))
except ValueError:
if err_msg is not None:
print(err_msg)
def input_number(msg, err_msg=None):
while True:
try:
return float(input(msg))
except ValueError:
if err_msg is not None:
print(err_msg)
Und um es zu benutzen:
user_number = input_number("input a number: ", "that's not a number!")
Oder wenn Sie keine "Fehlermeldung" wünschen:
user_number = input_number("input a number: ")
Einen String ohne Zeilenumbruch am Ende drucken
Um eine Zeile mit print
fortzusetzen, beenden Sie die print
Anweisung in Python 2.x mit einem Komma. Es wird automatisch ein Leerzeichen hinzugefügt.
print "Hello,",
print "World!"
# Hello, World!
In Python 3.x, die print
hat die Funktion eines optionalen end
Parameter das ist , was es am Ende der gegebenen Zeichenfolge gedruckt wird . Standardmäßig handelt es sich um ein Zeilenvorschubzeichen, das dem folgenden entspricht:
print("Hello, ", end="\n")
print("World!")
# Hello,
# World!
Sie könnten aber auch andere Zeichenketten übergeben
print("Hello, ", end="")
print("World!")
# Hello, World!
print("Hello, ", end="<br>")
print("World!")
# Hello, <br>World!
print("Hello, ", end="BREAK")
print("World!")
# Hello, BREAKWorld!
Wenn Sie mehr Kontrolle über die Ausgabe wünschen, können Sie sys.stdout.write
:
import sys
sys.stdout.write("Hello, ")
sys.stdout.write("World!")
# Hello, World!
Aus stdin lesen
Python-Programme können von Unix-Pipelines lesen. Hier ist ein einfaches Beispiel, wie man aus stdin
liest:
import sys
for line in sys.stdin:
print(line)
sys.stdin
dass sys.stdin
ein Stream ist. Das bedeutet, dass die for-Schleife erst beendet wird, wenn der Stream beendet ist.
Sie können nun die Ausgabe eines anderen Programms wie folgt in Ihr Python-Programm einleiten:
$ cat myfile | python myprogram.py
In diesem Beispiel kann cat myfile
ein beliebiger Unix-Befehl sein, der an stdout
cat myfile
.
Alternativ kann das Fileinput-Modul nützlich sein:
import fileinput
for line in fileinput.input():
process(line)
Eingabe aus einer Datei
Eingaben können auch aus Dateien gelesen werden. Dateien können mit der integrierten Funktion open
. Die Verwendung einer with <command> as <name>
-Syntax (als 'Context Manager' bezeichnet) macht es sehr einfach, open
und ein Handle für die Datei zu erhalten:
with open('somefile.txt', 'r') as fileobj:
# write code here using fileobj
Dadurch wird sichergestellt, dass die Datei automatisch geschlossen wird, wenn die Codeausführung den Block verlässt.
Dateien können in verschiedenen Modi geöffnet werden. Im obigen Beispiel wird die Datei schreibgeschützt geöffnet. Um eine vorhandene Datei nur zum Lesen zu öffnen, verwenden Sie r
. Wenn Sie diese Datei als Bytes lesen möchten, verwenden Sie rb
. Um Daten an eine vorhandene Datei anzuhängen, verwenden Sie a
. Verwenden Sie w
, um eine Datei zu erstellen oder vorhandene Dateien mit demselben Namen zu überschreiben. Mit r+
können Sie eine Datei zum Lesen und Schreiben öffnen. Das erste Argument von open()
ist der Dateiname, das zweite ist der Modus. Wenn der Modus leer bleibt, wird standardmäßig r
.
# let's create an example file:
with open('shoppinglist.txt', 'w') as fileobj:
fileobj.write('tomato\npasta\ngarlic')
with open('shoppinglist.txt', 'r') as fileobj:
# this method makes a list where each line
# of the file is an element in the list
lines = fileobj.readlines()
print(lines)
# ['tomato\n', 'pasta\n', 'garlic']
with open('shoppinglist.txt', 'r') as fileobj:
# here we read the whole content into one string:
content = fileobj.read()
# get a list of lines, just like int the previous example:
lines = content.split('\n')
print(lines)
# ['tomato', 'pasta', 'garlic']
Wenn die Größe der Datei sehr klein ist, können Sie den gesamten Inhalt der Datei in den Speicher lesen. Wenn die Datei sehr groß ist, ist es oft besser, Zeile für Zeile oder nach Abschnitten zu lesen und die Eingabe in derselben Schleife zu verarbeiten. Das zu tun:
with open('shoppinglist.txt', 'r') as fileobj:
# this method reads line by line:
lines = []
for line in fileobj:
lines.append(line.strip())
Beachten Sie beim Lesen von Dateien die betriebssystemspezifischen Zeilenumbruchszeichen. Obwohl for line in fileobj
automatisch entfernt werden, ist es immer sicher, strip()
in den gelesenen Zeilen aufzurufen, wie oben gezeigt.
Geöffnete Dateien ( fileobj
in den obigen Beispielen) zeigen immer auf einen bestimmten Ort in der Datei. Wenn sie zum ersten Mal geöffnet werden, zeigt das Datei-Handle auf den Anfang der Datei, die Position 0
. Der Datei-Handle kann seine aktuelle Position mit tell
anzeigen:
fileobj = open('shoppinglist.txt', 'r')
pos = fileobj.tell()
print('We are at %u.' % pos) # We are at 0.
Beim Lesen des gesamten Inhalts wird die Position des Dateihandlers am Ende der Datei angezeigt:
content = fileobj.read()
end = fileobj.tell()
print('This file was %u characters long.' % end)
# This file was 22 characters long.
fileobj.close()
Die Dateihandlerposition kann auf das gesetzt werden, was benötigt wird:
fileobj = open('shoppinglist.txt', 'r')
fileobj.seek(7)
pos = fileobj.tell()
print('We are at character #%u.' % pos)
Sie können während eines Anrufs auch eine beliebige Länge aus dem Dateiinhalt lesen. Dazu übergeben Sie ein Argument für read()
. Wenn read()
ohne Argument aufgerufen wird, wird es bis zum Ende der Datei gelesen. Wenn Sie ein Argument übergeben, liest es je nach Modus ( rb
und r
) diese Anzahl an Bytes oder Zeichen:
# reads the next 4 characters
# starting at the current position
next4 = fileobj.read(4)
# what we got?
print(next4) # 'cucu'
# where we are now?
pos = fileobj.tell()
print('We are at %u.' % pos) # We are at 11, as we was at 7, and read 4 chars.
fileobj.close()
Um den Unterschied zwischen Zeichen und Bytes zu demonstrieren:
with open('shoppinglist.txt', 'r') as fileobj:
print(type(fileobj.read())) # <class 'str'>
with open('shoppinglist.txt', 'rb') as fileobj:
print(type(fileobj.read())) # <class 'bytes'>