שיתוף | סקריפט קטן ופשוט למציאת קבצים כפולים בתוך תיקיה
-
אם כבר התחלתי להתעסק עם האשים אז הלכתי צעד קטן קדימה ובניתי סקריפט קטן בפייתון שעובר על כל הקבצים בתיקייה ומוצא קבצים כפולים
ארבע הערות:
א' הסקריפט לא בודק תתי - תיקיות
ב' הסקריפט יראה רק אחד מהקבצים הכפולים ולא את שניהם
ג' הסקריפט מיועד בעיקר לכאלו שרוצים ללמוד קצת פייתון - בשביל הפעולה הזאת קיימות כבר הרבה תוכנות מעולות (כולל אופציה נהדרת ב CCleaner)
ד' הסקריפט משווה את תוכן הקבצים ולא את השמות - כך שגם קבצים עם שמות שונים אבל תוכן זהה יזוהו אבל לא קבצים עם שם זהה ותוכן שונהimport hashlib import os def hashfile(file): os.chdir(dir_name) sha256 = hashlib.sha256() try: with open(file, 'rb') as f: while True: data = f.read(65536) if not data: break sha256.update(data) return sha256.hexdigest() except: pass list_of_hashs = [] duplicate_files = [] dir_name = input("enter full path : ") dir_name = dir_name.replace('"', "") for file in os.listdir(dir_name): current_hash = hashfile(file) if not current_hash in list_of_hashs: list_of_hashs.append(current_hash) else: duplicate_files.append(file) print(*duplicate_files, sep='\n') -
@מתכנת-חובב ברוך שכיוונתי / כיוונת. אני בדיוק עובד על משהו כזה דרך באט, עם שימוש באסימונים של פקודת פור (המעלה בזה שהוא מוצא גם קבצים עם שמות דומים ולאו דוקא שמות זהים)
@NH-LOCAL הסקריפט שלי לא בודק שמות זהים אלא תוכן זהה
-
@NH-LOCAL הסקריפט שלי לא בודק שמות זהים אלא תוכן זהה
-
@מתכנת-חובב מדהים! אם ככה, זה עדיף על סי-קלינר שרק בודק גודל או שם של קובץ
ב. מה מהירות הסריקה של זה?@NH-LOCAL סי קלינר יכול לבדוק גם תוכן
-
@NH-LOCAL סי קלינר יכול לבדוק גם תוכן
-
@מתכנת-חובב למיטב ניסיוני עם התוכנה היא לא באמת בודקת תוכן
@NH-LOCAL ולמיטב ניסיוני (הדי רב) היא בודקת
-
@NH-LOCAL ולמיטב ניסיוני (הדי רב) היא בודקת
-
@מתכנת-חובב מדהים! אם ככה, זה עדיף על סי-קלינר שרק בודק גודל או שם של קובץ
ב. מה מהירות הסריקה של זה?@NH-LOCAL כתב בשיתוף | סקריפט קטן ופשוט למציאת קבצים כפולים בתוך תיקיה:
ב. מה מהירות הסריקה של זה?
לא הכי מהיר בעולם
בדקתי עכשיו השוואה בין 2 קבצים בגודל 1.7 ג'יגה כל אחד ולקח 8 שניות (מחשב נייח i5 דור 9 וכונן NVMe מדור שלישי בלי כרטיס מסך) -
@NH-LOCAL כתב בשיתוף | סקריפט קטן ופשוט למציאת קבצים כפולים בתוך תיקיה:
ב. מה מהירות הסריקה של זה?
לא הכי מהיר בעולם
בדקתי עכשיו השוואה בין 2 קבצים בגודל 1.7 ג'יגה כל אחד ולקח 8 שניות (מחשב נייח i5 דור 9 וכונן NVMe מדור שלישי בלי כרטיס מסך) -
אם כבר התחלתי להתעסק עם האשים אז הלכתי צעד קטן קדימה ובניתי סקריפט קטן בפייתון שעובר על כל הקבצים בתיקייה ומוצא קבצים כפולים
ארבע הערות:
א' הסקריפט לא בודק תתי - תיקיות
ב' הסקריפט יראה רק אחד מהקבצים הכפולים ולא את שניהם
ג' הסקריפט מיועד בעיקר לכאלו שרוצים ללמוד קצת פייתון - בשביל הפעולה הזאת קיימות כבר הרבה תוכנות מעולות (כולל אופציה נהדרת ב CCleaner)
ד' הסקריפט משווה את תוכן הקבצים ולא את השמות - כך שגם קבצים עם שמות שונים אבל תוכן זהה יזוהו אבל לא קבצים עם שם זהה ותוכן שונהimport hashlib import os def hashfile(file): os.chdir(dir_name) sha256 = hashlib.sha256() try: with open(file, 'rb') as f: while True: data = f.read(65536) if not data: break sha256.update(data) return sha256.hexdigest() except: pass list_of_hashs = [] duplicate_files = [] dir_name = input("enter full path : ") dir_name = dir_name.replace('"', "") for file in os.listdir(dir_name): current_hash = hashfile(file) if not current_hash in list_of_hashs: list_of_hashs.append(current_hash) else: duplicate_files.append(file) print(*duplicate_files, sep='\n')@מתכנת-חובב איך משתמשים בזה? בסביבת עבודה של פייתון? Notepad++? משהו אחר?
-
@מתכנת-חובב איך משתמשים בזה? בסביבת עבודה של פייתון? Notepad++? משהו אחר?
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות