Методи копіювання файлів Python
Python надає вбудовані функції для легкого копіювання файлів за допомогою утиліт оболонки операційної системи.
Наступна команда використовується для копіювання файлу
shutil.copy(src,dst)
Наступна команда використовується для копіювання файлу з інформацією про метадані
shutil.copystat(src,dst)
Ось кроки для копіювання файлу в Python
Крок 1) Перш ніж скопіювати файл, нам потрібно отримати шлях до вихідного файлу в поточному каталозі. У коді -
- Оголошення змінної
- Застосування функції розділення до змінної
Пояснення коду
- Спочатку ми перевіримо, чи існує наш файл "guru99.txt" чи ні. Оскільки ми раніше створили файл guru99.txt, ми знаємо, що він існує, і продовжимо з кодом
- Ми зберігаємо шлях до файлу у змінній " src ", якщо ваш файл існує
- Отримавши шлях, ми розділимо шлях та ім’я файлу
- Для цього ми будемо використовувати функцію split
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). Ми використовуємо модуль шляху, щоб отримати детальні відомості про час модифікації файлу, а потім ми будемо використовувати функцію часових класів c time, щоб перетворити це на читабельний час. Тому , коли ми запускаємо код, ми можемо побачити файл guru99.txt Остання зміна пн 8 Січня й 13:35 2018.
- Кодовий рядок # 17 - Він робить те саме, надаючи інформацію про модифікацію файлу, але він має інший формат для його представлення. Тут ми використовуємо функцію Get Modification Time (path.getmtime ("guru99.txt")). Тепер замість використання функції c c ми будемо використовувати функцію From Stamp Time та побудувати об’єкт дати часу. На виході ви бачите, що деталі модифікації файлу надруковані в іншому форматі 08.01.2018, 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)