במדריך זה, נלמד על מודול Shutil ב-Python. נדון כיצד נוכל לבצע את פעולת הקובץ ברמה גבוהה כגון יצירת קובץ העתקה חדש ולאחסן אותו בארכיון ולהעתיק תוכן אחד לקובץ אחר באמצעות הסקריפט של Python. בואו לקבל מבוא בסיסי של מודול Shutil.
מודול Python Shutil
מודול Python shutil מספק את המתקן לבצע את פעולת הקבצים ברמה גבוהה. הוא יכול לפעול עם אובייקט הקובץ ומציע לנו את היכולת להעתיק ולהסיר את הקבצים. הוא מטפל בסמנטיקה ברמה נמוכה כגון יצירה וסגירה של אובייקטי קבצים לאחר ביצוע כל הפעולות.
עבודה של מודול Shutil
מודול Python shutil מגיע עם השיטות המובנות הרבות. נחקור כמה שיטות חשובות. כדי להתחיל לעבוד עם מודול זה, ראשית עלינו לייבא אותו לקובץ Python הנוכחי שלנו.
העתק קבצים
מודול זה מספק את עותק() פונקציה המשמשת להעתקת נתונים מקובץ אחד למשנהו. הקבצים חייבים להיות באותה ספרייה וקובץ היעד חייב להיות בר כתיבה. בואו נבין את התחביר הבא.
תחביר-
פורמט מחרוזת java
shutil.copyfile(source, destination, *, follow_symlinks = True)
פָּרָמֶטֶר:
בתחביר לעיל -
- הארגומנט הראשון הוא source שמציג את הנתיב של קובץ המקור.
- הארגומנט השני הוא destination שמציג את הנתיב של קובץ היעד.
- הטיעון השלישי הוא אופציונלי; ערך ברירת המחדל של פרמטר זה נכון.
- זה מחזיר מחרוזת המציגה את הנתיב של הקובץ החדש שנוצר.
בואו נבין את הדוגמה הבאה.
דוגמא -
import os import shutil # Creating a new folder in the current directory os.mkdir('javatpoint') # It will show the empty folder print('Empty Folder:', os.listdir('javatpoint')) # testcompare.py file will be copied in the javatpoint folder shutil.copy('testcompare.py', 'javatpoint') # After coping the file folder shows the file print('File Copied Name:', os.listdir('javatpoint'))
תְפוּקָה:
Empty Folder: [] File Copied Name: ['testcompare.py']
הסבר -
הפונקציה copy() לוקחת את שם הספרייה כארגומנט. הנה ה מטא נתונים לא הועתק, הקובץ שהועתק ייחשב כקובץ שזה עתה נוצר. שיטה זו גם שיבטה את כל ההרשאות של הקובץ. דבר אחד שיש לציין הוא שאם קובץ היעד כבר קיים, הוא יוחלף בקובץ המקור.
arraylist Java sort
בואו נראה דוגמה נוספת.
דוגמה - 2 אם יעד הוא ספרייה
import os import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' # In the newly created foloder destination = r'D:Python ProjectNewFile' # Storing the new path of hello.txt file dest = shutil.copy(source, destination) # Print the new path print(dest)
תְפוּקָה:
D:Python ProjectNewFilehello.txt
כפי שציינו, הפונקציה copy() לא מעתיקה את המטא נתונים. אבל, נשתמש ב- copy2() פונקציה המאפשרת לנו להעתיק את הקובץ כולל המטא נתונים שלו.
דוגמה - 3: טיפול בשגיאות בעת שימוש בשיטת העתקה
# importing shutil module import shutil # It is a source path source = r'D:Python ProjectNewFolder' # It is a destination path destination = r'D:Python ProjectNewFolder' try: shutil.copy(source, destination) print('File copied successfully.') # If the given source and path are same except shutil.SameFileError: print('Source and destination represents the same file.') # If there is no permission to write except PermissionError: print('Permission denied.') # For other errors except: print('Error occurred while copying file.')
תְפוּקָה:
Source and destination represents the same file.
הפונקציה copy2()
פונקציה זו דומה ל- עותק() פוּנקצִיָה. זה יכול גם להעתיק את התוכן של קובץ אחד לאחר, אבל ההבדל היחיד הוא שהוא יכול לשמר את המטא נתונים של הקובץ. בואו נבין את התחביר הבא.
תחביר:
shutil.copy2(source, destination, *, follow_symlinks = True)
פָּרָמֶטֶר:
בתחביר לעיל -
- הארגומנט הראשון הוא source שמציג את הנתיב של קובץ המקור.
- הארגומנט השני הוא destination שמציג את הנתיב של קובץ היעד.
- הטיעון השלישי הוא אופציונלי; ערך ברירת המחדל של פרמטר זה נכון.
- זה מחזיר מחרוזת המציגה את הנתיב של הקובץ החדש שנוצר.
בואו נבין את הדוגמה הבאה.
דוגמא -
import os import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' metadata = os.stat(source) print(metadata) # In the newly created foloder destination = r'D:Python ProjectNewFile' # Storing the new path of hello.txt file dest1 = shutil.copy2(source, destination) metadata = os.stat(dest1) print('After copying file') print(metadata) # Print the new path print(dest1)
תְפוּקָה:
os.stat_result(st_mode=33206, st_ino=562949953459285, st_dev=3029671014, st_nlink=1, st_uid=0, st_gid=0, st_size=17, st_atime=1622815671, st_mtime=1622705607, st_ctime=1622705607) After copying file os.stat_result(st_mode=33206, st_ino=562949953459287, st_dev=3029671014, st_nlink=1, st_uid=0, st_gid=0, st_size=17, st_atime=1622815748, st_mtime=1622705607, st_ctime=1622706243) D:Python ProjectNewFilehello.txt
הפונקציה shutil.copyfile()
שיטה זו משמשת להעתקת תוכן קובץ המקור לקובץ היעד המצפה למטא נתונים. למקור ויעד חייבים להיות קובץ וקובץ יעד חייב לספק את הרשאת הכתיבה. אם כבר קיים קובץ יעד, הוא יוחלף בקובץ החדש, אחרת צור קובץ חדש.
בוא נראה את התחביר הבא.
תחביר:
shutil.copyfile(source, destination, *, follow_symlinks = True)
פרמטרים:
מחרוזת המרה ל-int ב-java
בתחביר לעיל -
- הארגומנט הראשון הוא source שמציג את הנתיב של קובץ המקור.
- הארגומנט השני הוא destination שמציג את הנתיב של קובץ היעד.
- הטיעון השלישי הוא אופציונלי; ערך ברירת המחדל של פרמטר זה נכון.
- זה מחזיר מחרוזת המציגה את הנתיב של הקובץ החדש שנוצר.
בואו נבין את הדוגמה הבאה.
דוגמא -
import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' # In the newly created foloder destination = r'D:Python ProjectNewFilehi.txt' # Storing the new path of hello.txt file dest1 = shutil.copyfile(source, destination) # Print the new path print(dest1)
תְפוּקָה:
D:Python ProjectNewFilehi.txt
הפונקציה shutil.copytree()
שיטה זו משמשת לשכפול הספרייה השלמה. הוא מעתיק עץ ספריות שלם המושרש במקור לספריית היעד. ספריית היעד לא חייבת כבר להופיע. בוא נראה את התחביר הבא.
תחביר:
שרוואננד
shutil.copytree(src, dst, symlinks = False, ignore = None, copy_function = copy2, igonre_dangling_symlinks = False)
פרמטרים:
בתחביר לעיל:
- זה מחזיר את המחרוזת שמייצגת את הנתיב של הספרייה החדשה שנוצרה.
דוגמא -
# importing shutil module import shutil # It is source path src = r'D:Python Projectjavatpoint' # It is destination path dest = r'D:Python ProjectNewFolder' # Copy the content of # source to destination dest1 = shutil.copytree(src, dest) # Now we print path of newly # created file print('Destination path:', dest1)
תְפוּקָה:
Destination path: D:Python ProjectNewFolder
הקובץ shutil.rmtree()
שיטה זו משמשת למחיקת עץ הספריות המלא. בוא נראה את התחביר הבא.
תחביר:
shutil.rmtree(path, ignore_errors=False, onerror=None)
פָּרָמֶטֶר-
לולאה מוגברת של java
בתחביר לעיל -
בואו נבין את הדוגמה הבאה -
דוגמא -
import shutil import os # location location_dir = r'D:Python ProjectNewFile' # directory directory = r'D:Python Projectjavatpoint' # path path1 = os.path.join(location_dir, directory) # removing directory shutil.rmtree(path1)
הקוד לעיל יסיר את הספרייה הנתונה.
הפונקציה shutil.which()
ה shutil.which() הפונקציה משמשת כדי לקבל את הנתיב של יישום הפעלה שיופעל אם ה-cmd הנתון ייקרא. הוא מוצא את הקובץ בנתיב הנתון. בוא נראה את התחביר הבא.
תחביר:
shutil.which(cmd, mode = os.F_OK | os.X_OK, path = None)
פרמטרים
בתחביר לעיל -
- שיטה זו מחזירה את הנתיב ליישום בר הפעלה.
בואו נבין את הדוגמה הבאה.
דוגמא -
# importing shutil module import shutil # search the file cmd = 'python' # Using shutil.which() method locating = shutil.which(cmd) # Print result print(locating)
תְפוּקָה:
C:Pythonpython.EXE
הוא ימצא את הקובץ הנתון במחשב, אם נמצא קובץ הוא מחזיר את הנתיב של הקובץ אחרת מחזיר ללא.