Найти тему
Easy Python

Задача 7. Применение атрибута file в функции print. Python

Всем привет!

Задача:

Создать код, в котором функция print выведет надпись «Программы в Python состоят из модулей» в отдельно созданный файл

Решение:

В предыдущих задачах, когда мы запускали коды с функцией print в среде vs code, то значения объектов функции выводились на экран Terminal этой среды. Это происходит, потому что по умолчанию для вывода используется стандартный поток данных - sys.stdout, который выводит информацию обычно туда, где исполняется программа.

Но что если мы хотим сохранить получившиеся значения функции print в отдельный файл, а не на экран?

Для этого и существует атрибут file, который дает нам  возможность прописать куда именно вы хотите вывести данные. Данные можно выводить в любые другие потоки вывода или файлы, которые имеют метод write.

Рассмотрим подробнее как работать с этим атрибутом:

1. Во-первых, как и с атрибутами sep и end в нем также нужно выводить значение после знака . равно, то есть file =.

2. Далее мы должны прописать команду открытия файла open (в переводе с английского «открыть»)

3. Третий шаг: после команды open в скобках написать имя файла в кавычках, а после указать, что файл имеет метод ‘w’ (‘write’ = «писать», с английского) или  ‘a’ («append» - «добавить» с английского).

Пример:

Рис. 1
Рис. 1

Давайте теперь, решим задачу:

Рис. 2
Рис. 2

После нажатия кнопки Run Python File, мы обнаружим, что на уже привычный нам TERMINAL никаких объектов функции print выведено не было. Потому что мы вывели эти объекты в файл ‘example.txt’. Но путь к файлу не был указан.

У каждого начинающего питониста возникнет вопрос, а где лежит этот файл? И как проверить, что сообщение было в него записано?

Для того, чтобы найти путь к файлу, который используется по умолчанию, используем команду модуля стандартной библиотеки os getcwd:

Рис. 3
Рис. 3

В то время как первая функция print выведет нам искомую строку в указанный файл «example.txt», вторая функция print в строке 4 выведет нам надпись в окно Terminal редактора VS code:

Рис. 4
Рис. 4

Вот так, я нашла куда сохранился текст. У вас же будет указан другой путь:

Рис. 5
Рис. 5

Открыла его и проверила, что текст был выведен в файл:

Рис. 6
Рис. 6

Задача решена!

И напоследок мы рассмотрим некоторые теоретические аспекты, связанные с выводом информации с помощью функции print:

Обратите еще раз внимание на рис. 3:

1. Функция print в первой строке вывела объекты в файл, который был создан в указанной по умолчанию программе vs code папке.

2. Функция print в строке 4, вывела нам информацию на экран, т.е. в стандартный поток вывода. Если вы используете редактор VS Code, стандартным потоком вывода будет TERMINAL.

3. Для того, чтобы найти путь к файлу, используемый по умолчанию мы использовали функцию getcwd() модуля os. Для этого мы импортировали модуль os, а затем вызвали функцию. Результат же запросили вывести на экран.

4. Мы также можем создать файл вручную в любом месте на нашем компьютере. Например на рабочем столе.

Рис 7
Рис 7

Если мы нажмем правой кнопкой мыши по созданному файлу и найдем в полученном  списке «Свойства», то можем во вкладке «Безопасность» скопировать путь к файлу «Имя объекта»:

Рис. 8
Рис. 8

И теперь мы можем указать совсем другой путь к файлу через прописывание полного пути:

Рис. 9
Рис. 9

Обратите внимание, что функция getcwd все также ссылается на путь к папке, куда сохраняются файлы ПО УМОЛЧАНИЮ, т.е. если не прописан иной путь.

5. Мы также можем изменить  папку по умолчанию для сохранения файлов , используя функцию chdir() ("change directory" - "изменить директорию", с английского) модуля os:

Рис. 10
Рис. 10

В результате выполнения кода получим указание на старый и новый пути к сохранению файлов по умолчанию:

Рис. 11
Рис. 11

6. Как уже было сказано выше, по умолчанию для выполнения функции print используется стандартный поток вывода sys.stdout.  В случае использования редактора VS Code для программирования, вывод будет в окно TERMINAL данного редактора.

7. Мы можем перенаправить поток вывода, и он по умолчанию будет выводить информацию в определенный объект, переназначив место вывода для объекта sys.stdout:

Рис. 12
Рис. 12

В результате, вместо того, чтобы напечатать на экран, функция print по умолчанию запишет все в указанный файл:

Рис. 13
Рис. 13

8. Чтобы вернуться назад к выводу на экран, добавим строки 5-7:

Рис. 14
Рис. 14

7- ая строка - для того, чтобы убедиться, что сообщение по умолчанию будет теперь выведено на экран:

Рис. 15
Рис. 15

9. А теперь давайте обратим внимание на небольшой код состоящий из четырех функций print, где указан файл с папкой по умолчанию и атрибутом ‘w’ («писать» - с англ.)

Что выведет нам данный код?

Рис. 16
Рис. 16

Он выведет только последнюю (4-ю) запись:

Рис. 17
Рис. 17

Все потому что атрибут ‘w’ каждый раз заново перезаписывает файл. Но если мы используем вместо атрибута ‘w’ , атрибут ‘a’ (append - «добавить», с английского):

Рис. 18
Рис. 18

То она будет просто добавлять элементы, не удаляя предыдущие:

Рис. 19
Рис. 19

Если мы снова нажмем кнопку Run Python File, строки будут снова записаны (еще ниже):

Рис. 20
Рис. 20

Теперь в первой функции print укажем в file атрибут ‘w’, а в остальных оставим ‘a’:

Рис. 21
Рис. 21

Запустим и получим:

Рис. 22
Рис. 22

Как видите, первый print стер все предыдущие записи и записал новый объект, а последующие были добавлены к первому.

Подведем итоги:

Этот урок получился довольно объемным. В нем мы немного раскрыли следующие темы:

1. Стандартный вывод текстового потока sys.stdout и возможность изменять стандартный поток вывода(перенаправление вывода) в программе в целом, используя модуль sys и его функцию sys.stdout.

2. Текущий рабочий каталог os.getcwd и возможность изменить рабочий каталог с помощью функции chdir() модуля os.

3. Создание файла без указания пути и создание файла с указанием другого пути (не являющегося рабочим каталогом по умолчанию)

4. Правила написания ключевого значения атрибута file функции print, используемую для создания файла функцию open , а также значения  атрибутов создаваемого файла ‘w’ и ‘a’ и посмотрели, как они работают. Определились, что в качестве объекта файл, может быть любой объект, который имеет метод “white” («писать» - с английского). Это может быть как текстовый документ вроде txt, docx, так и страница html или какой-то другой поток вывода данных.

Понравилась статья, ставьте лайк!

Есть вопросы? Общайтесь друг с другом в комментариях!

Предыдущие статьи:

Задача 1. Установка интерпретатора Python и среды программирования VS Code на Windows

Задача 2. Написать программу вывода на экран. Функция print()

Задача 3. Python. Используя два числовых значения провести операцию сложения и вывести результат

Задача 4. Python. Строковое и числовое представление данных на экран. str() и int( )

Задача 5. Применение атрибута sep в функции print. Python

Задача 6. Применение атрибута end в функции print. Python

Теги:

#Python, #программирование, #задачи,  #print(), #end, #sep, #file, #sys.stdout, #os.getcwd, #os.chdir