نسخ الملف في لغة بايثون: Shutil.copy()، طريقة Shutil.copystat()
طرق نسخ ملف بايثون
توفر Python وظائف مضمنة لنسخ الملفات بسهولة باستخدام أدوات شل لنظام التشغيل.
فولوwing يتم استخدام الأمر لنسخ الملف
shutil.copy(src,dst)
فولوwing يتم استخدام الأمر لنسخ الملف مع معلومات البيانات الوصفية
shutil.copystat(src,dst)
كيفية نسخ ملف في بايثون
فيما يلي خطوات نسخ الملف في بايثون باستخدام طريقة Shutil Copy():
الخطوة 1) التقط المسار الأصلي في الدليل الحالي
قبل أن نقوم بنسخ ملف، نحتاج إلى الحصول على المسار إلى الملف الأصلي في الدليل الحالي. في الكود –
- إعلان المتغير
- تطبيق وظيفة الانقسام على المتغير
شرح الكود
- سنقوم أولاً بالتحقق من وجود ملف "guru99.txt" الخاص بنا أم لا. وبما أننا أنشأنا ملف guru99.txt سابقًا، فنحن نعلم أنه موجود، وسنواصل العمل مع الكود
- نقوم بتخزين مسار الملف في المتغير "SRC"إذا كان ملفك موجودًا
- بمجرد أن نحصل على المسار، سنقوم بفصل المسار واسم الملف
- لهذا، سوف نستخدم الانقسام
path.split
دالة على متغير المصدر - الكود عند تنفيذه يطبع "اسم الملف"و"مسار الملف" بشكل منفصل
الخطوة 2) قم بإنشاء نسخة من ملفنا الحالي باستخدام وحدة Shutil
نستخدم وحدة Shutil لإنشاء نسخة من الملف الموجود. لقد اعتدنا هنا على إنشاء نسخة من ملفنا الحالي "guru99.txt".
شرح الكود
- خذ اسم الملف الأصلي "guru99.txt" وأضف الحروف .bak في النهاية "guru99.txt.bak". سيكون هذا الاسم ذو الامتداد .bak هو نسختنا المكررة
- وبعد ذلك سنستخدم وظيفة النسخ الخاصة بالأداة المساعدة للنسخ من المصدر إلى الوجهة
- عند تشغيل الكود، سترى أنه تم إنشاء ملف مكرر بامتداد .bak على الجانب الأيمن من اللوحة
الخطوة 3) انسخ البيانات الوصفية المرتبطة بالملف وأذونات الملف والمعلومات الأخرى
تقوم وظيفة النسخ بنسخ محتوى الملف فقط ولكن لا توجد معلومات أخرى. لنسخ البيانات الوصفية المرتبطة بالملف وإذن الملف والمعلومات الأخرى التي يتعين عليك استخدامها "com.copystat" وظيفة. قبل أن نقوم بتشغيل هذا الكود، علينا حذف ملف النسخة "guru99.text.bak".
بمجرد حذف الملف وتشغيل البرنامج، سيقوم بإنشاء نسخة من ملف .txt الخاص بك ولكن هذه المرة مع جميع المعلومات مثل إذن الملف ووقت التعديل ومعلومات البيانات الوصفية. يمكنك الذهاب إلى نظام التشغيل الخاص بك للتحقق من المعلومات.
ها هو الكود
import os import shutil from os import path def main(): # make a duplicate of an existing file if path.exists("guru99.txt"): # get the path to the file in the current directory src = path.realpath("guru99.txt"); #seperate the path from the filter head, tail = path.split(src) print("path:" +head) print("file:" +tail) #let's make a backup copy by appending "bak" to the name dst = src+".bak" # nowuse the shell to make a copy of the file shutil.copy(src, dst) #copy over the permissions,modification shutil.copystat(src,dst) if __name__=="__main__": main()
الخطوة 4) جلب المعلومات
يمكنك جلب المعلومات حول الملف النصي الذي تم تعديله مؤخرًا
-
سطر الكود رقم 15- يوضح اليوم والتاريخ والشهر والسنة والوقت الذي تم فيه آخر تعديل لملف .txt (guru99). نستخدم وحدة المسار للحصول على وقت تعديل الملف details، ثم سنستخدم فئات الوقت ج وظيفة الوقت لتحويل ذلك إلى وقت قابل للقراءة. لذا عندما نقوم بتشغيل الكود، يمكننا رؤية آخر تعديل للملف guru99.txt الاثنين 8 ينايرth الساعة 13:35 2018.
-
سطر الكود رقم 17- يقوم بنفس الشيء حيث يقدم معلومات حول تعديل الملف، ولكن له تنسيق مختلف لتمثيله. هنا نستخدم الحصول على وظيفة وقت التعديل (path.getmtime("guru99.txt")). الآن بدلاً من استخدام وظيفة الوقت c التي سنستخدمها من وظيفة الطابع الزمني والذهاب لبناء كائن التاريخ والوقت. في الإخراج، يمكنك رؤية تفاصيل وقت تعديل الملف مطبوعة بتنسيق مختلف 2018-01-08, 13:35:51.334072
ها هو الكود
# # Example file for working with o.s path module import os from os import path import datetime from datetime import date, time, timedelta import time def main(): # Get the modification time t = 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)