Chcę uruchomić skrypt, który w zasadzie pokazuje takie dane wyjściowe:
Installing XXX... [DONE]
Obecnie drukuję Installing XXX...
najpierw, a następnie drukuję [DONE]
.
Jednak teraz chcę drukować Installing xxx...
i [DONE]
na tej samej linii.
Jakieś pomysły?
python
printing
stdout
line-breaks
użytkownik697108
źródło
źródło
Odpowiedzi:
Możesz użyć
print
instrukcji, aby to zrobić bez importowaniasys
.Przecinek na końcu
print
wiersza uniemożliwiaprint
wydanie nowego wiersza (należy pamiętać, że na końcu danych wyjściowych będzie dodatkowe miejsce).Rozwiązanie Python 3
Ponieważ powyższe nie działa w Python 3, możesz to zrobić zamiast tego (ponownie, bez importowania
sys
):Funkcja drukowania akceptuje
end
parametr domyślnie ustawiony na"\n"
. Ustawienie go na pusty ciąg zapobiega wydaniu nowego wiersza na końcu wiersza.źródło
print("...", end="", flush=True)
w Python 3, w Python 2 dodajsys.stdout.flush()
połączenie.print("Progress: {}%".format(var), end="\r", flush=True)
Możesz po prostu użyć tego:
i wyjście będzie
nie trzeba przesadzać
import sys
. Zwróć uwagę na symbol przecinka na końcu.Python 3+,
print("some string", end="");
aby usunąć wstawkę nowej linii na końcu. Czytaj dalej przezhelp(print);
źródło
print
funkcja ma nieco inną składnię w pythonie 2 VS 3.Powinieneś użyć znaku cofania „ \ r ” lub („ \ x08 ”) char, aby wrócić do poprzedniej pozycji w wynikach konsoli
Python 2+:
Python 3:
Ten kod będzie liczył od 0% do 100% w jednej linii. Ostateczna wartość będzie wynosić:
Dodatkowe informacje o opróżnianiu w tym przypadku tutaj: Dlaczego instrukcje drukowania python zawierające argumenty „end =” zachowują się inaczej w pętlach while?
źródło
Użyj
sys.stdout.write('Installing XXX... ')
isys.stdout.write('Done')
. W ten sposób musisz ręcznie dodać nowy wiersz,"\n"
jeśli chcesz odtworzyć funkcję drukowania. Myślę, że używanie do tego przekleństw może być niepotrzebne.źródło
__future__
importach lub czymkolwiek podobnym.Żadna z odpowiedzi nie działała dla mnie, ponieważ wszystkie zostały wstrzymane, dopóki nie napotkano nowej linii. Napisałem prostego pomocnika:
Aby to przetestować:
„hello” wydrukuje najpierw i zasypie ekran przed snem. Następnie możesz użyć standardowego wydruku.
źródło
sys.stdout.write
wydrukuje bez przewozu powrotnegohttp://en.wikibooks.org/wiki/Python_Programming/Input_and_output#printing_without_commas_or_newlines
źródło
Najprostszy:
Python 3
Oznacza to, że cofnie kursor do początku, niż wydrukuje coś i zakończy się w tym samym wierszu. Jeśli w pętli rozpocznie drukowanie w tym samym miejscu, w którym zaczyna.
źródło
print(’something to be override’, end=‘\r’)
jest to prostsze.Ten prosty przykład wydrukuje 1-10 w tym samym wierszu.
źródło
Drukuj ma opcjonalny
end
argument, to jest to, co wydrukowano na końcu. Domyślnie jest to nowy wiersz, ale możesz go zmienić na pusty ciąg. na przykładprint("hello world!", end="")
źródło
print 'something',
. Przecinek na końcu zapobiega dodaniu nowej linii.Jeśli chcesz zastąpić poprzednią linię (zamiast ciągłego dodawania do niej), możesz połączyć ją
\r
zprint(),
na końcu instrukcji print. Na przykład,będzie liczyć od 0 do 9, zastępując stary numer w konsoli.
"...DONE!"
Zostaną wydrukowane na tej samej linii co ostatni licznik, 9.W twoim przypadku dla OP, pozwoliłoby to konsoli wyświetlić procent ukończenia instalacji jako „pasek postępu”, w którym możesz zdefiniować początkową i końcową pozycję znaku i zaktualizować znaczniki pomiędzy nimi.
źródło
Oto wersja zgodna z wersją 2.7 pochodząca z wersji 3.0 autorstwa @ Vadim-Zin4uk:
Python 2
Jeśli o to chodzi, dostarczone rozwiązanie 3.0 wygląda na nieco rozdęte. Na przykład metoda backspace nie korzysta z argumentu liczby całkowitej i prawdopodobnie mogłaby zostać całkowicie wyeliminowana.
Python 3
Oba zostały przetestowane i działają.
źródło
To jest bardzo stary wątek, ale tutaj jest bardzo dokładna odpowiedź i przykładowy kod.
\r
to ciąg znaków reprezentujący powrót karetki z zestawu znaków ASCII. Jest taki sam jak ósemkowy015
[chr(0o15)
] lub szesnastkowy0d
[chr(0x0d)
] lub dziesiętny13
[chr(13)
]. Zobaczman ascii
nudne czytanie. Jest\r
to dość przenośna reprezentacja i jest łatwa do odczytania przez ludzi. Po prostu oznacza to przesunięcie karetki na maszynie do pisania do samego początku bez przesuwania papieru. Jest toCR
część,CRLF
która oznacza powrót karetki i przesunięcie linii .print()
jest funkcją w Pythonie 3. W Pythonie 2 (dowolna wersja, z której chciałbyś skorzystać)print
możesz zostać zmuszony do funkcji poprzez zaimportowanie jej definicji z__future__
modułu. Zaletą tejprint
funkcji jest to, że możesz określić, co ma być drukowane na końcu, zastępując domyślne zachowanie\n
drukowania nowego wiersza na końcu każdegoprint()
wywołania.sys.stdout.flush
mówi Pythonowi, aby wyczyścił wyjście standardowego wyjścia , czyli tam, gdzie wysyłasz wyjście,print()
chyba że określono inaczej. Możesz także uzyskać to samo zachowanie, uruchamiającpython -u
lub ustawiając zmienną środowiskowąPYTHONUNBUFFERED=1
, pomijając w ten sposób wywołaniaimport sys
isys.stdout.flush()
. Kwota, którą zyskasz, robiąc to, jest prawie dokładnie zerowa i nie jest bardzo łatwa do debugowania, jeśli wygodnie zapomnisz, że musisz zrobić ten krok, zanim aplikacja zachowa się poprawnie.I próbka. Zauważ, że działa to doskonale w Pythonie 2 lub 3.
źródło
print () ma wbudowany parametr „end”, który jest domyślnie ustawiony na „\ n” Wywołanie print („To jest Ameryka”) tak naprawdę wywołuje print („To jest Ameryka”, end = „\ n”). Łatwy sposób to wywołać print („This is America”, end = „”)
źródło
Na wypadek, gdybyś wcześniej zapisał wartości w tablicy, możesz wywołać je w następującym formacie:
źródło
Python dołącza znak nowej linii jako koniec drukowania. Użyj end = '' dla python3 dla metody drukowania, aby dodać spację zamiast nowego wiersza. dla python2 użyj przecinka na końcu instrukcji print.
źródło
Znalazłem ten post Quora , z tym przykładem, który działał dla mnie (python 3), który był bliższy temu, do czego go potrzebowałem (tj. Usunięciu całej poprzedniej linii).
Podany przykład:
Do drukowania tego samego wiersza, jak sugerowali inni, wystarczy użyć
end=""
źródło
Znalazłem to rozwiązanie i działa ono w Pythonie 2.7
źródło
print
jest niepoprawna składnia dla Pythona 2.7, a kod nie działa nawet z poprawną składnią.