Методы копирования файлов Python
Python предоставляет встроенные функции для простого копирования файлов с помощью утилит оболочки операционной системы.
Следующая команда используется для копирования файла
shutil.copy(src,dst)
Следующая команда используется для копирования файла с информацией о метаданных.
shutil.copystat(src,dst)
Вот шаги для копирования файла в Python
Шаг 1) Прежде чем копировать файл, нам нужно получить путь к исходному файлу в текущем каталоге. В коде -
- Объявление переменной
- Применение функции разделения к переменной
Код Пояснение
- Сначала мы собираемся проверить, существует ли наш файл «guru99.txt». Поскольку мы создали файл guru99.txt ранее, мы знаем, что он существует, и продолжим работу с кодом.
- Мы сохраняем путь к файлу в переменной « src », если ваш файл существует.
- Как только мы получим путь, мы разделим путь и имя файла.
- Для этого мы собираемся использовать
path.split
функцию разделения исходной переменной. - Код при выполнении выводит « имя файла » и « путь к файлу » отдельно
Шаг 2) Мы используем модуль Shutil для создания копии существующего файла. Здесь мы создали копию нашего существующего файла «guru99.txt».
Код Пояснение
- Возьмите исходное имя файла «guru99.txt» и добавьте буквы .bak в конце «guru99.txt.bak». Это имя с расширением .bak будет нашей дубликатом.
- А затем мы воспользуемся функцией копирования утилиты для копирования из источника в место назначения.
- Когда вы запустите код, вы увидите, что в правой части панели создается дубликат файла с расширением .bak.
Шаг 3) Функция копирования копирует только содержимое файла, но никакой другой информации. Чтобы скопировать метаданные, связанные с файлом, права доступа к файлу и другую информацию, вы должны использовать функцию « copystat ». Перед тем, как запустить этот код, мы должны удалить нашу копию файла "guru99.text.bak".
После того, как вы удалите файл и запустите программу, она создаст копию вашего файла .txt, но на этот раз со всей информацией, такой как права доступа к файлу, время модификации и информация о метаданных . Вы можете перейти в оболочку своей ОС, чтобы проверить информацию.
Вот код
import osimport shutilfrom os import pathdef main():# make a duplicate of an existing fileif path.exists("guru99.txt"):# get the path to the file in the current directorysrc = path.realpath("guru99.txt");#seperate the path from the filterhead, tail = path.split(src)print("path: +head)print("file: +tail)#let's make a backup copy by appending "bak" to the namedst = src+".bak"# nowuse the shell to make a copy of the fileshutil.copy(src, dst)#copy over the permissions,modificationshutil.copystat(src,dst)if __name__=="__main__":main()
Шаг 4) Вы можете получить информацию о последнем измененном текстовом файле.
- Строка кода №15 - В ней указывается день, дата, месяц, год и время, когда файл .txt (guru99) был в последний раз изменен. Мы используем модуль пути, чтобы получить подробную информацию о времени модификации файла, а затем мы собираемся использовать функцию time classes c time, чтобы преобразовать это в удобочитаемое время. Поэтому , когда мы запускаем код, мы можем увидеть файл guru99.txt Последнее изменение пн 8 янв й 13:35 2018.
- Строка кода № 17 - она делает то же самое, предоставляя информацию о модификации файла, но имеет другой формат для ее представления. Здесь мы используем функцию Get Modification Time (path.getmtime ("guru99.txt")). Теперь вместо использования функции c time мы будем использовать функцию From Time Stamp и создадим объект даты и времени. На выходе вы можете видеть, что детали времени изменения файла распечатаны в другом формате 2018-01-08, 13: 35: 51.334072
Вот код
## Example file for working with o.s path moduleimport osfrom os import pathimport datetimefrom datetime import date, time, timedeltaimport timedef main():# Get the modification timet = time.ctime(path.getmtime("guru99.txt.bak"))print(t)print(datetime.datetime.fromtimestamp(path.getmtime("guru99.txt.bak")))if __name__ == "__main__":main()
Резюме
- Чтобы создать копию существующего файла, используйте код shutil.copy (src, dst)
- Чтобы скопировать всю информацию из исходного файла в дубликат файла, например, разрешение файла, время модификации или информацию о метаданных , используйте код shutil.copystat (src, dst)