2016-10-11 1 views
0

Ich habe zwei Python-Module: buildContent.py, die Code enthält, der in Ausgabe ich will. buildRun.py die ich ausführe, um die Ausgabe in eine Datei umzuleiten.Ausgabe in eine Datei mit einem anderen Python-Modul drucken

Ich versuche, die Ausgabe von buildContent.py in eine Datei zu speichern, und ich habe so etwas wie dies in den buildRun.py:

import buildContent 
import sys 

with open('out.xhtml', 'w') as f: 
    sys.stdout = f 
print buildContent 

Ich kann meine Ausgabe in der Konsole, aber die Datei Ergebnis sehen ist:

<module 'buildContent' from 'here's my path to the file'> 

was tun?

+1

Sie versuchen, das eigentliche Modul zu drucken. Wollten Sie eine Funktion in 'buildContent' aufrufen? Was Sie im Moment tun wollen, ist wie 'import sys; Drucksystem'. –

+0

Das öffnete mir die Augen ... Also habe ich alles in eine Funktion eingepackt und dann in 'buildRun' gerufen und es funktioniert! Jetzt ist das einzige Problem, dass ich "None" in der letzten Zeile der Ausgabedatei gedruckt habe. – dyb

+1

Verstanden ... Ich sollte die Funktion nicht "drucken". Einfach anrufen ist genug. – dyb

Antwort

1

die Umleitung funktioniert ordnungsgemäß. Wenn Sie Ihre Druckanweisung durch eine Zeichenfolge ersetzen, werden Sie sehen, dass es funktioniert hat.

Der Grund für diese Ausgabe ist, dass Sie keine Funktionen innerhalb von buildcontent aufrufen, sondern nur importieren.

Die Lösung besteht darin, die buildContent-Datei aus dem oben genannten heraus zu starten, wo Ihre print-Anweisung sein sollte.

siehe this question für ein Beispiel

0

Statt buildContent zu drucken, führen Sie einfach das Modul mit den erforderlichen Parametern. Nicht sicher, ob der Inhalt von buildContent aber so etwas wie dies funktionieren sollte:

buildContent(data) 

diese Weise wird der Code innerhalb buildContent auf dem "data" laufen und die Ergebnisse ausdrucken (falls die print-Anweisungen in dem Modul angegeben werden). Wenn Sie print-Anweisungen nicht in buildContent einschließen, sammeln Sie die Ausgabe in eine Variable und drucken Sie diese Variable. Etwas wie folgt aus:

var = buildContent(data) 
print var 

Wenn Sie keine Daten benötigen atall buildContent zu laufen, nur laufen:

buildContent()