2015-06-19 11 views
11

Szukam pisać programy oparte na konsoli w Pythona, które mogą wykonywać funkcje do wykonywania ogólnych zadań, całkiem ogólne. Czy możliwe jest przechwycenie wszystkiego zapisanego na konsoli przez wywołania drukowania w funkcji bez potrzeby zwracania ciągu, podobnie jak bash i powłoka okna pozwalają na wyprowadzenie wyjścia programu do pliku tekstowego, tj.Python przechwytuje wszystkie wydruki

ipconfig> ipconfig.txt

ale robiąc to wewnątrz programu python, w którym wywoływana jest funkcja, wszystko, co zostało wydrukowane na konsoli wewnątrz tej funkcji, jest zebrane jako lista ciągów, a następnie można je zapisać do pliku txt wyboru użytkowników?

+0

Pewnie. Uruchom skrypt Pythona z powłoki i użyj powłoki, aby jak zwykle przekierować dane wyjściowe. – kindall

Odpowiedz

10

Można to zrobić poprzez ustawienie sys.stdout być plik z wyboru

import sys 

sys.stdout = open('out.dat', 'w') 
print "Hello" 

sys.stdout.close() 

nie będą wyświetlane żadne wyjście, ale utworzy plik o nazwie out.dat z tekstu drukowanego.

Należy zauważyć, że nie musi to być rzeczywisty plik, ale może to być instancja StringIO, w której można po prostu użyć metody getvalue uzyskiwania dostępu do wszystkiego, co zostało wcześniej wydrukowane.

+0

Dziękuję, to dokładnie to, czego szukałem. – BruceJohnJennerLawso

Powiązane problemy