В этом уроке мы научимся копировать, то есть переносить, содержимое из одного файла в другой при помощи команд 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 ?

 

Домашнее задание

  1. Попробуйте поменять название файлов на рабочем столе. Не забудьте также изменить названия файлов в программе.
  2. Попробуйте поменять переменные в коде программы.
  3. Попробуйте сократить код, чтобы он был меньше. Программистам часто приходится сокращать код, убирая ненужные строки текста или сокращая строки кода из двух-трех в одну.
  4. Напишите комментарий к каждой строчке программного кода. Это очень сильно будет продвигать вас в понимании программирования на Python 2.7.

В следующем уроке мы начнем знакомство с функциями в Питоне - перейти в урок 22