Копирование файлов в Python
23 мая 2013 г.
Archy
Просмотров: 94705
RSS
3
Python для начинающих
python copy, python move, python shutil, python работа с файлами

Перемещать и копировать файлы по каталогам нам поможет функции модуля shutil. Подключаем модуль shutil в начале нашего скрипта на Python, потом уже получим доступ к его функциям. Функции модуля shutil не ограничиваются только на копирование и перемещение, мы обсудим разные методики использования функции даного модуля.
Функция copyfile(Копируемый файл, путь куда копируем)
Копирует содержимое файла по указанному пути и создает новый в указанном во втором параметре месте. Методанные при этом не копируются т.е. права доступа и т.д. Если место куда мы копируем уже имеет такой файл он будет перезаписан. В случае неудачи копирования, возбуждается исключение IOError.
>>> import shutil # Подключаем модуль >>> shutil.copyfile(r'/home/py/mouse.txt', r'/home/py/new-mouse.txt') >>> # Указанный путь не будет существовать >>> shutil.copyfile(r'/home/py/mouse.txt', r'/go/here/no.txt') IOError: [Errno: 2] No such file or directory '/go/here/no.txt'
Функция copy(Копируемый файл, куда копируем)
Копирует файл вместе с его правами. В случае если файл уже существовал, он будет перезаписан. Неудачное копирование вызовет исключение IOError.
shutil.copy(r'my_file.txt', r'new_file.txt')
Сайт avi1.ru поможет Вам заказать платные лайки в Ютубе с очень большими оптовыми скидками. Торопитесь, пока действует предложение. Также на страницах данного сервиса Вы сможете найти все, что нужно для продвижения в Ютубе: подписчиков, просмотры и т. д.
Функция copy2(Копируемый файл, путь куда копируем)
Копирует файл вместе с его методанными. Если файл уже существует, он будет перезаписан.
shutil.copy2(r'mendel.txt', r'file.txt')
Перемещение файла, функция move(путь к файлу, путь куда перемещать)
Копирует файл из указанного места, создает новый или перезаписывает уже существующий по новому пути. После выполнения копирования, копируемый файл удаляется. Бывает случай, что файл не удается удалить, в Windows возбуждается исключение WindowsError.
shutil.move(r'book.pdf', r'D:\Books')
Летняя жара дает о себе знать, программируя нельзя концентрироваться из за сухого воздуха и душной обстановки. Решить данную проблему можно установив инверторные кондиционеры Mitsubishi у себя дома или в офисе. Сделайте себе и окружающим приятно.
Еще записи по теме
- Алгоритм расшифровки названии автомобилей в игре «Что за тачка?» на Python
- Обработка строк в Python
- Модуль StringIO в Python
- Библиотека PIL. Работа с изображениями в Python
- Вложение декораторов в Python
- Перебор элементов словаря dict() в Python
- Создание базы данных SQLite в Python
Как копировать файлы из одной папки в другую, указав её полный путь
Прошу мне помочь с решением проблемы. Представим ситуацию, что есть exe (скомпилированный .py файл) и папка «files», где находятся какие-либо файлы. А есть ещё папка «end», которая находится, к примеру, на другом локальном диске. Как скопировать через Python файлы из папки «files» и, указав полный путь (C. ), вставить это в папке «end» (если требуется, то с заменой). Это может пригодится на пример с установкой модов во всякие игры (GTA SA на пример). Просьба привести примеры и скинуть понятный материал по этому. Заранее спасибо)
Отслеживать
задан 27 янв 2020 в 11:58
Матвей Воронцов Матвей Воронцов
13 2 2 серебряных знака 5 5 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
import os import shutil folder_from = r'otkuda' folder_to = r'kuda' for f in os.listdir(folder_from): if os.path.isfile(os.path.join(folder_from, f)): shutil.copy(os.path.join(folder_from, f), os.path.join(folder_to, f)) if os.path.isdir(os.path.join(folder_from, f)): os.system(f'rd /S /Q \\') shutil.copytree(os.path.join(folder_from, f), os.path.join(folder_to, f))
Отслеживать
ответ дан 27 янв 2020 в 12:48
11.9k 2 2 золотых знака 11 11 серебряных знаков 28 28 бронзовых знаков
Как скопировать файл в python
В этом уроке мы научимся копировать, то есть переносить, содержимое из одного файла в другой при помощи команд 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.
- Вы здесь:
- Главная
- Python 2.7 с нуля
- Урок 21. Копирование содержимого файлов в Питоне 2.7
Операции с файлами
Базовые возможности языка программирования Python позволяют не только манипулировать данными в текстовых документах, но и всячески управлять ими самими. Для этого существует несколько специальных библиотек, встроенные функции которых обеспечивают копирование, удаление, переименование и прочие разновидности операций с файлами на компьютере.
Проверка существования файла
Избежать досадных ошибок при работе с текстовым документом, которые могут быть связаны с его отсутствием на жестком диске компьютера, поможет метод exists из модуля os. Его вызов позволяет проверить в Python существование файла по указанному пути, получив в качестве результирующего ответа булево значение True или False. Чтобы воспользоваться данным методом, необходимо прежде всего подключить библиотеку os, а затем вызвать exists у класса path. Следующий пример на Python показывает проверку наличия файлов test.txt и test10.txt в корневом каталоге жесткого диска D. Функция print показывает, что в наличии на D только первый документ.
import os print(os.path.exists("D:\\test.txt")) print(os.path.exists("D:\\test10.txt")) True False
Иногда при работе с документами возникает потребность в проверке не только существования некоего объекта по заданному пути. Функция isfile из уже упомянутой здесь библиотеки os дает программисту возможность убедиться в том, что полученный по определенному адресу объект на жестком диске компьютера является файлом, а не папкой. Данный метод также находится в классе path. В следующем примере показывается реакция isfile на получение в качестве аргумента файла test.txt и каталога folder в корне D. Как видно из результатов работы функции print, в первом случае отображается True, а затем False.
import os print(os.path.isfile("D:\\test.txt")) print(os.path.isfile("D:\\folder")) True False
Проверить наличие файла по указанному адресу можно и с помощью функции open, применив дополнительно конструкцию with as. Данный метод производит открытие документа для того, чтобы программа могла взаимодействовать с его содержимым. Если функция open смогла без ошибок выполниться, это означает, что по переданному ей в качестве аргумента пути имеется файл. Если же произойдет исключение, то файл не удалось открыть. Это еще не говорит о том, что его нету. Возможно, к примеру, не достаточно прав доступа к нему. В приведенном ниже примере программа сообщает о наличии искомого документа при помощи метода print. Как видно из результатов, на экран выводится сообщение file is open.
try: with open("D:\\test.txt") as file: print("file is open") except: print('no open') file is open
Копирование файла
Библиотека под названием shutil включает в себя несколько полезных функций для создания копий объектов на жестком диске. Чтобы быстро скопировать файл в исходный каталог, стоит воспользоваться методом copyfile, предварительно подключив модуль shutil. В роли первого аргумента здесь выступает оригинальный документ, в то время как вторым параметром нужно поставить предполагаемый новый файл. Стоит учитывать, что копируется только содержимое, но не метаданные. В следующем примере происходит копирование данных из файла test.txt в test2.txt на диске D. Функция copyfile также возвращает адрес созданного документа.
import shutil shutil.copyfile("D:\\test.txt", "D:\\test2.txt")
Встроенный метод copy из модуля shutil позволяет в Python копировать файл в указанную папку, сохраняя при этом его изначальное имя. Приведенный ниже пример кода демонстрирует копирование информации из test.txt в объект, который находится на диске D в каталоге под названием folder. Как и в предыдущем случае с функцией copyfile, переносятся только внутренние данные, но не сведения о дате создания и редактирования документа.
import shutil shutil.copy("D:\\test.txt", "D:\\folder")
Чтобы полностью скопировать информацию из текстового файла, а также все сведения о нем, необходимо воспользоваться готовым методом copy2. Способ его применения такой же, как и в случае с функцией copy. На месте первого параметра здесь размещается адрес изначального файла, в то время как второй аргумент сообщает локацию и название нового документа. Ниже показан пример, где содержимое и метаданные копируются в test2.txt из папки folder.
import shutil shutil.copy2("D:\\test.txt", "D:\\folder\\test2.txt")
Удаление файла
Избавиться от объекта, если известно его имя и точное расположение на диске, очень легко. С этой задачей поможет справиться метод remove из уже упомянутой ранее библиотеки os. Все, что требуется сделать, это передать ей в качестве параметра полный адрес ненужного файла, не забыв для начала подключить модуль os. Ниже приведен пример того, как с помощью скрипта Python удалить файл test.txt в корне диска D.
import os os.remove("D:\\test.txt")
Получение размера файла
Определить точный размер любого объекта на жестком диске можно с помощью стандартной функции getsize из модуля os, которая возвращает величину файла в байтах. Выполнив импорт библиотеки os, необходимо вызвать метод класса path. Аргументом тут выступает расположение документа в памяти компьютера. Согласно результатам выполнения getsize, размер test.txt составляет 7289. Метод print выводит это на экран.
import os print(os.path.getsize("D:\\test.txt")) 7289
Вычислить размер файла в Python можно и другим способом, открыв его при помощи open, после чего вызвав функцию seek. Ей необходимо передать в качестве параметра область для чтения данных, начиная от начала файла до его конца. В итоге следует вызвать метод tell через ссылку на текстовый файл, а затем отправить результат его работы в print для вывода в консоль.
import os with open("D:\\test.txt") as file: file.seek(0, os.SEEK_END) print(file.tell()) 7289
Переименование файла
Изменить название документа можно не только благодаря средствам системы, но и с помощью готовых функций модуля os. С этой задачей хорошо справляется метод rename, принимающий в качестве параметров исходное и новое имя файла. Следующий пример показывает работу с документом test.txt в корневом каталоге диска D, который переименовывается в test1.txt.
import os os.rename("D:\\test.txt", "D:\\test1.txt")
Аналогично, можно в Python переименовать файл с помощью метода move из модуля shutil. Подключив данную библиотеку, достаточно лишь передать функции местоположение и новое имя документа. Код программы, где продемонстрировано переименование test.txt в test1.txt, находится ниже.
import shutil shutil.move("D:\\test.txt", "D:\\test1.txt")
Таким образом, главные операции по взаимодействию с файлами в языке Python выполняются при помощи нескольких встроенных библиотек, в число которых входят os и shutil. Функции этих модулей позволяют осуществлять проверку на наличие файла на диске, копировать его в нескольких разных режимах, а также удалять, переименовывать и отображать размер.