9 октября 2012 г.

Операция Print


В языке Python инструкция print – это просто удобный для программистов интерфейс к стандартному потоку вывода.


Формат вызова:
Синтаксис вызова функции print в версии 3.0 имеет следующий вид:
print([object, ...][, sep=’ ‘][, end=’\n’][, file=sys.stdout])


Функция print в действии:

Пользоваться функцией  print в  версии  3.0  намного  проще, чем можно  было бы предположить, после знакомства с некоторыми ее особенностями.


C:\misc> c:\python30\python
>>>
>>> print()            # Выведет пустую строку
>>> x = ‘spam’
>>> y = 99
>>> z = [‘eggs’]
>>>
>>> print(x, y, z)     # Выведет три объекта
spam 99 [‘eggs’]
-------------------------------------------------------------


>>> print(x, y, z, sep=’’)     # Строка-разделитель выводиться не будет
spam99[‘eggs’]
>>>
>>> print(x, y, z, sep=’, ‘)   # Нестандартная строка-разделитель
spam, 99, [‘eggs’]
--------------------------------------------------------------


>>> print(x, y, z, end=’’)      # Подавление вывода символа конца строки
spam 99 [‘eggs’]>>>
>>>

>>> print(x, y, z, end=’’); print(x, y, z) # Вывод двух строк в одной строке
spam 99 [‘eggs’]spam 99 [‘eggs’]

>>> print(x, y, z, end=’...\n’) # Нестандартный разделитель строк
spam 99 [‘eggs’]...
>>>
---------------------------------------------------------------


>>> print(x, y, z, sep=’...’, end=’!\n’)   # Несколько именованных аргументов
spam...99...[‘eggs’]!
>>> print(x, y, z, end=’!\n’, sep=’...’)   # Порядок не имеет значения
spam...99...[‘eggs’]!
-----------------------------------------------------------------

Инструкция print        Эквивалент           Интерпретация
в Python 2.6            в Python 3.0

-----------------------------------------------------------------  

print x, y              print(x, y)      Вывод объектов в 
                                         sys.stdout
                                         добавляет пробел между 
                                         объектами и символ конца 
                                         строки


print x, y,        print(x, y, end=’’)   То же самое, только
                                         на этот раз символ
                                         конца строки не  
                                         добавляется    

print >> afile, x, y                     Текст передается методу 
                     print(x, y, file=afile)  myfile.write, а не                  
                                         sys.stdout.write


Перенаправление потока вывода в инструкции print:
В обеих версиях, Python 3.0 и 2.6, выводимый текст по умолчанию передает- Python 3.0 и 2.6, выводимый текст по умолчанию передает-  3.0 и 2.6, выводимый текст по умолчанию передается  в  поток стандартного вывода. Однако достаточно часто возникает необходимость вывести текст в какое-нибудь другое место, например в файл, чтобы сохранить результаты для последующего использования или для нужд тестирования.  Подобное  перенаправление  вывода  можно  организовать  на  уровне системной командной оболочки, за пределами интерпретатора, однако перенаправление внутри сценария реализуется ничуть не сложнее.

Перенаправление потока вывода вручную:

import sys
sys.stdout = open(‘log.txt’, ‘a’) # Перенаправить вывод в файл
...
Print(x, y, x)     



Автоматическое перенаправление потоков:

Если вдруг после вывода данных в файл потребуется вернуться обратно к выводу на экран.

>>> import sys
>>> temp = sys.stdout              # Сохранить для последующего восстановления
>>> sys.stdout = open(‘log.txt’, ‘a’) # Перенаправить вывод в файл
>>> print(‘spam’)                     # Выведет в файл, а не на экран
>>> print(1, 2, 3)
>>> sys.stdout.close()                # Вытолкнуть буферы на диск
>>> sys.stdout = temp                 # Восстановить первоначальный поток

>>> print(‘back here’)                # Вывести на экран
back here
>>> print(open(‘log.txt’).read())     # Результаты более ранних обращений
spam                                  # к инструкции print
1 2 3



Следующий фрагмент выводит текст в файл log.txt:


log = open(‘log.txt’, ‘a’) # 3.0
print(x, y, z, file=log)# Вывести в объект, напоминающий файл
print(a, b, c)          # Вывести в оригинальный поток вывода 

log = open(‘log.txt’, ‘a’)     # 2.6
print >> log, x, y, z   # Вывести в объект, напоминающий файл
print a, b, c   # Вывести в оригинальный поток вывода

Комментариев нет:

Отправить комментарий