В этом уроке мы научимся копировать, то есть переносить, содержимое из одного файла в другой при помощи команд Python 2.7. Из любого файла в любой же файл. Это пригодится вам в дальнейшей работе при создании более сложных программ.
Практический пример
Создаем на рабочем столе текстовый файл test17_text.txt
и вписываем в него ЛЮБОЙ текст.
Сохраняем текстовый файл в кодировке OEM 866. Это нужно для того, чтобы на экране выводились кириллические буквы, а не кракозябры. Как сохранить: в программе Notepad++ нажимаем вверху на: Кодировки - Кодировки -Кириллица - OEM 866
.
Теперь создаем на рабочем столе файл test17.py
Пишем в него следующий программный код:
# -*- coding: utf- 8 -*- from sys import argv from os.path import exists script, old_file, new_file = argv print u"Перенос содержимого из старого файла %s в новый файл %s" % (old_file, new_file) first_file = open(old_file) indata = first_file.read() print u"Старый файл - размером %d байт" % len(indata) print u"Новый файл существует? %r" % exists(new_file) print u"Все ОК, нажмите Enter для продолжения работы скрипта или CTRL+C для его отмены." raw_input() second_file = open(new_file, 'w') second_file.write(indata) print u"Все готово..." second_file.close() first_file.close()
Краткое пояснение к коду
В начале нашего скрипта – как обычно – прописываем работу с переменной argv
(более подробно работа с argv разбирается ЗДЕСЬ и ЗДЕСЬ).
Вторая строка кода – это импорт из модуля os.path
. Что это за модуль? os.path
– это модуль, вложенный в модуль os
. Модуль os
– это модуль, позволяющий программисту на Питоне работать с операционной системой компьютера. А модуль os.path
– это модуль, позволяющий программе работать с путями, существующими в операционной системе.
Функция exists
позволяет программе и пользователю понять, существует ли файл или не существует. Если он существует, функция вернет значение True
, если файла не существует, функция exists
вернет значение False
.
Далее присваиваем переменной argv
названия файлов (название файла со скриптом на Питоне, который мы написали, а также старого и нового текстовых файлов).
Далее прописываем, что программа должна открыть старый файл и все его содержимое присвоить переменной first_file
. Далее выполняем чтение этого содержимого и присваиваем его переменной indata
.
Далее мы должны узнать размер содержимого, которое будем копировать, в байтах.
Все, что прописываем далее, вы уже должны знать из предыдущих уроков. Если забыли, идем СЮДА и повторяем.
Теперь открываем программу PowerShell и прописываем команду: python desktop/test17.py desktop/test17_text.txt desktop/test17_text_new.txt
Заметьте, что мы прописываем также название третьего, то есть создаваемого текстового файла test17_text_new.txt
, который программа создаст и в который скопирует все содержимого из старого текстового файла test17_text.txt
Далее выполняем требования программы.
В итоге у вас должно получиться также, как на картинке.
А теперь не забудьте на рабочем столе найти новый созданный файл test17_text_new.txt и посмотрите его содержимое - совпадает ли с содержимым старого файла test17_text.txt ?
Домашнее задание
- Попробуйте поменять название файлов на рабочем столе. Не забудьте также изменить названия файлов в программе.
- Попробуйте поменять переменные в коде программы.
- Попробуйте сократить код, чтобы он был меньше. Программистам часто приходится сокращать код, убирая ненужные строки текста или сокращая строки кода из двух-трех в одну.
- Напишите комментарий к каждой строчке программного кода. Это очень сильно будет продвигать вас в понимании программирования на Python 2.7.
В следующем уроке мы начнем знакомство с функциями в Питоне - перейти в урок 22.