Всем привет!
Задача:
Создать код, в котором функция print выведет надпись «Программы в Python состоят из модулей» в отдельно созданный файл
Решение:
В предыдущих задачах, когда мы запускали коды с функцией print в среде vs code, то значения объектов функции выводились на экран Terminal этой среды. Это происходит, потому что по умолчанию для вывода используется стандартный поток данных - sys.stdout, который выводит информацию обычно туда, где исполняется программа.
Но что если мы хотим сохранить получившиеся значения функции print в отдельный файл, а не на экран?
Для этого и существует атрибут file, который дает нам возможность прописать куда именно вы хотите вывести данные. Данные можно выводить в любые другие потоки вывода или файлы, которые имеют метод write.
Рассмотрим подробнее как работать с этим атрибутом:
1. Во-первых, как и с атрибутами sep и end в нем также нужно выводить значение после знака . равно, то есть file =.
2. Далее мы должны прописать команду открытия файла open (в переводе с английского «открыть»)
3. Третий шаг: после команды open в скобках написать имя файла в кавычках, а после указать, что файл имеет метод ‘w’ (‘write’ = «писать», с английского) или ‘a’ («append» - «добавить» с английского).
Пример:
Давайте теперь, решим задачу:
После нажатия кнопки Run Python File, мы обнаружим, что на уже привычный нам TERMINAL никаких объектов функции print выведено не было. Потому что мы вывели эти объекты в файл ‘example.txt’. Но путь к файлу не был указан.
У каждого начинающего питониста возникнет вопрос, а где лежит этот файл? И как проверить, что сообщение было в него записано?
Для того, чтобы найти путь к файлу, который используется по умолчанию, используем команду модуля стандартной библиотеки os getcwd:
В то время как первая функция print выведет нам искомую строку в указанный файл «example.txt», вторая функция print в строке 4 выведет нам надпись в окно Terminal редактора VS code:
Вот так, я нашла куда сохранился текст. У вас же будет указан другой путь:
Открыла его и проверила, что текст был выведен в файл:
Задача решена!
И напоследок мы рассмотрим некоторые теоретические аспекты, связанные с выводом информации с помощью функции print:
Обратите еще раз внимание на рис. 3:
1. Функция print в первой строке вывела объекты в файл, который был создан в указанной по умолчанию программе vs code папке.
2. Функция print в строке 4, вывела нам информацию на экран, т.е. в стандартный поток вывода. Если вы используете редактор VS Code, стандартным потоком вывода будет TERMINAL.
3. Для того, чтобы найти путь к файлу, используемый по умолчанию мы использовали функцию getcwd() модуля os. Для этого мы импортировали модуль os, а затем вызвали функцию. Результат же запросили вывести на экран.
4. Мы также можем создать файл вручную в любом месте на нашем компьютере. Например на рабочем столе.
Если мы нажмем правой кнопкой мыши по созданному файлу и найдем в полученном списке «Свойства», то можем во вкладке «Безопасность» скопировать путь к файлу «Имя объекта»:
И теперь мы можем указать совсем другой путь к файлу через прописывание полного пути:
Обратите внимание, что функция getcwd все также ссылается на путь к папке, куда сохраняются файлы ПО УМОЛЧАНИЮ, т.е. если не прописан иной путь.
5. Мы также можем изменить папку по умолчанию для сохранения файлов , используя функцию chdir() ("change directory" - "изменить директорию", с английского) модуля os:
В результате выполнения кода получим указание на старый и новый пути к сохранению файлов по умолчанию:
6. Как уже было сказано выше, по умолчанию для выполнения функции print используется стандартный поток вывода sys.stdout. В случае использования редактора VS Code для программирования, вывод будет в окно TERMINAL данного редактора.
7. Мы можем перенаправить поток вывода, и он по умолчанию будет выводить информацию в определенный объект, переназначив место вывода для объекта sys.stdout:
В результате, вместо того, чтобы напечатать на экран, функция print по умолчанию запишет все в указанный файл:
8. Чтобы вернуться назад к выводу на экран, добавим строки 5-7:
7- ая строка - для того, чтобы убедиться, что сообщение по умолчанию будет теперь выведено на экран:
9. А теперь давайте обратим внимание на небольшой код состоящий из четырех функций print, где указан файл с папкой по умолчанию и атрибутом ‘w’ («писать» - с англ.)
Что выведет нам данный код?
Он выведет только последнюю (4-ю) запись:
Все потому что атрибут ‘w’ каждый раз заново перезаписывает файл. Но если мы используем вместо атрибута ‘w’ , атрибут ‘a’ (append - «добавить», с английского):
То она будет просто добавлять элементы, не удаляя предыдущие:
Если мы снова нажмем кнопку Run Python File, строки будут снова записаны (еще ниже):
Теперь в первой функции print укажем в file атрибут ‘w’, а в остальных оставим ‘a’:
Запустим и получим:
Как видите, первый 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