Suche…


Input () und raw_input () verwenden

Python 2.x 2.3

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.

Python 3.x 3.0

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

Python 3.x 3.0

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.
Python 2.x 2.3

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

Python 2.x 2.3

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!
Python 3.x 3.0

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'>


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow