wake-up-neo.net

Python: Weisen Sie die Druckausgabe einer Variablen zu

Ich würde gerne wissen, wie Sie die Ausgabe der print-Funktion (oder einer beliebigen Funktion) einer Variablen zuweisen. Um ein Beispiel zu geben:

import eyeD3
tag = eyeD3.Tag()
tag.link("/some/file.mp3")
print tag.getArtist()

Wie kann ich einer Variable die Ausgabe von print tag.getArtist zuweisen?

16
Willie Koomson

Die print-Anweisung in Python konvertiert ihre Argumente in Strings und gibt diese Strings in stdout aus. Um den String stattdessen in einer Variablen zu speichern, konvertieren Sie ihn nur in einen String:

a = str(tag.getArtist())
21
Sven Marnach

wahrscheinlich benötigen Sie eine der Funktionen str, repr oder unicode

somevar = str(tag.getArtist())

abhängig davon, welche Python-Shell Sie verwenden

7

Bitte beachten Sie, dass ich diese Antwort basierend auf Python 3.x geschrieben habe. Keine Sorge, Sie können der Variablen wie folgt die Anweisung print() zuweisen.

>>> var = print('some text')
some text
>>> var
>>> type(var)
<class 'NoneType'>

Nach der Dokumentation,

Alle Argumente, die keine Schlüsselwörter sind, werden in Zeichenfolgen wie str() konvertiert und in den Stream geschrieben, getrennt durch sep und gefolgt von end. Sowohl sep als auch end müssen Zeichenfolgen sein. Sie können auch None sein, was bedeutet, dass die Standardwerte verwendet werden. Wenn keine Objekte angegeben sind, schreibt print () nur end.

Das Dateiargument muss ein Objekt mit einer write(string) -Methode sein. Wenn es nicht vorhanden ist oder None, wird sys.stdout verwendet. Da gedruckte Argumente in Textzeichenfolgen konvertiert werden, kann print() nicht mit Dateiobjekten im Binärmodus verwendet werden. Verwenden Sie für diese stattdessen file.write(...).

Deshalb können wir der Variablen keine print() Anweisungswerte zuweisen. In dieser Frage haben Sie (or any function) Gefragt. Also print() auch eine Funktion mit dem Rückgabewert mit None. Der Rückgabewert von Python-Funktion ist also None. Sie können jedoch die Funktion (mit Klammern ()) aufrufen und den Rückgabewert auf diese Weise speichern.

>>> var = some_function()

Die Variable var hat also den Rückgabewert some_function() oder den Standardwert None. Nach der Dokumentation zu print() , All non-keyword arguments are converted to strings like str() does and written to the stream. Schauen wir uns an, was in str() passiert.

Geben Sie eine Zeichenfolge -Version des Objekts zurück. Wenn das Objekt nicht angegeben wird, wird die leere Zeichenfolge zurückgegeben. Andernfalls hängt das Verhalten von str() wie folgt davon ab, ob eine Codierung oder Fehler angegeben wurden.

Wenn wir ein String-Objekt erhalten, können Sie die folgende Codezeile wie folgt ändern:

>>> var = str(some_function())

oder Sie können str.join() verwenden, wenn Sie wirklich ein string -Objekt haben.

Gibt eine Zeichenfolge zurück, die die Verkettung der Zeichenfolgen in iterable darstellt. Ein TypeError wird ausgelöst, wenn Nicht-String-Werte in iterable vorhanden sind, einschließlich bytes -Objekten. Das Trennzeichen zwischen den Elementen ist die Zeichenfolge, die diese Methode bereitstellt.

änderung kann wie folgt sein,

>>> var = ''.join(some_function())  # you can use this if some_function() really returns a string value
0

Um die Frage allgemeiner zu beantworten, how to redirect standard output to a variable ?

mach Folgendes : 

from io import StringIO
import sys

result = StringIO()
sys.stdout = result
result_string = result.getvalue()

Wenn Sie dies nur in einer Funktion tun müssen, gehen Sie folgendermaßen vor: 

old_stdout = sys.stdout  

# your function containing the previous lines
my_function()

sys.stdout = old_stdout
0
Arcyno