LINUX.ORG.RU

[python][print][sys.stdout] Научите печатать! ;)


0

1

Вот что я хочу, полностью идентично bash:

#!/bin/bash
echo -n "Wait ..."
((i=1))
while (( $i < 10 ))
	do
		echo -n "."
		sleep 1
		((i=$i+1))
	done
echo "!"
exit 0

Попытки на python 2.7

1: Вывод только после завершения, а я хочу видеть появления точек в процессе выполнения..

# -*- coding: utf-8 -*-
from __future__ import print_function
import sys, time
print ( "Wait ...", sep='', end='', file=sys.stdout)
#sys.stdout.write( "Whait ..." )
i=1
while i < 10:
	print ( ".", end='' )
#	sys.stdout.write( "." )
	time.sleep(1)
	i = i +1
print ( "!" )
quit()

2: некрасиво, оно конец строки пишет

# -*- coding: utf-8 -*-
import sys, time
print "Wait ..."
i=1
while i < 10:
	print "."
	time.sleep(1)
	i = i +1
print "!\n"
quit()


Будем откровенны. Однострочники на перле не нужны

А методы write() и flush() выглядят как раз очень логично, ибо являются отражением того факта, что стандартные потоки вводы/вывода/ошибок есть по сути своей файловые дескрипторы. Кто-то просто не осилил до конца документацию.

fat_angel ★★★★★ ()
Ответ на: комментарий от anonymous

да что ви гойворите. то что вывод (на терминал) - затратная операция и оптимизируется путем вывода больших кусков по мере их накопления, вы не знаете? а для того, чтобы выбросить накопленный буфер немедленно во всех языках, которые поддерживают (консольный) ВВ используется (f)flush

marvin_yorke ★★★ ()
Ответ на: комментарий от marvin_yorke

У меня там стоит:

while os.popen('ping -c 3 '+IP+"|grep ', 0% packet loss,'").read() == '':

Но вопрос был не о цыклах...

К стати как мне написать условие доступности более по питоновски?

sdh ()
Ответ на: комментарий от marvin_yorke

Да чито ви гавагите? Запустите на своей Vist-е сначала это,

class A:
    def __del__(self):
        print "A: goodbye"

class B:
    def __del__(self):
        print "B: goodbye"

a = A()
b = B()

a.m_b = b
b.m_a = a

а потом это,

class A:
    def __del__(self):
        print "A: goodbye"

class B:
    def __del__(self):
        print "B: goodbye"

a = A()
b = B()

a.m_b = b
b.m_a = a

a.m_b = 0

и утритесь.

anonymous ()
Ответ на: комментарий от anonymous

Э... а к чему эта бездна экспрессии и много букв кода? В огороде бузина, в киеве дядька...

AIv ★★★★★ ()
Ответ на: комментарий от sdh

эмм... это же элементарные знания по буферизации ввода-вывода. //не пайтонист, написал метод, а он, оказывается, есть...

do0dlez ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.