בירור | מיון קבצים מרובים לפי שמות
-
@קוקר מצורף קוד פייתון שעושה את זה,
והנה קובץ מקומפל, רק שים לב שעל קובץ האקסל והקבצים להיות באותה תיקייה של התוכנה, וקובץ האקסל צריך להיות בשם "שמות הקבצים", ולהיות עם שמות העמודות בשורה הראשונה "שם הקובץ" ו"התיקיה להעברה".
https://send.magicode.me/send-file/file/bfd1facfd91b75f232f7a1990bfc2adb2fceebed/view
# Developed by abaye © # https://ko-fi.com/abaye # email: cs@abaye.co # The source of the icon image is the site icons8.com import os import pandas as pd import shutil import sys def get_script_directory(): if getattr(sys, 'frozen', False): # Running as a compiled executable (PyInstaller) return os.path.dirname(sys.executable) else: # Running as a script return os.path.dirname(os.path.abspath(__file__)) script_directory = get_script_directory() files_directory = script_directory excel_file_path = os.path.join(files_directory, 'שמות הקבצים.xlsx') try: # טען את הנתונים מקובץ האקסל, תוך דילוג על השורה הראשונה עם הכותרות df = pd.read_excel(excel_file_path) except FileNotFoundError: print(f"שגיאה: קובץ האקסל '{excel_file_path}' לא נמצא.") exit(1) except Exception as e: print(f"שגיאה: לא ניתן לטעון את קובץ האקסל. שגיאה: {e}") exit(1) #df = pd.read_excel(excel_file_path) for index, row in df.iterrows(): file_name = row['שם הקובץ'] folder_name = row['התיקיה להעברה'] file_path = os.path.join(files_directory, file_name) destination_folder = os.path.join(files_directory, folder_name) if not os.path.exists(destination_folder): os.makedirs(destination_folder) destination_path = os.path.join(destination_folder, file_name) try: shutil.copy(file_path, destination_path) print(f"הקובץ '{file_name}' הועתק לתיקייה '{folder_name}' בהצלחה.") except FileNotFoundError: print(f"שגיאה: הקובץ '{file_name}' לא נמצא בתיקייה הראשית.") except Exception as e: print(f"שגיאה: לא ניתן להעתיק את הקובץ '{file_name}'. שגיאה: {e}") print("הפעולה הסתיימה!")
-
@אביי
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\Home\AppData\Local\Programs\Python\Python312\Lib\encodings\cp1255.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9f in position 647: character maps to <undefined> -
@אלף-שין כתב בבירור | מיון קבצים מרובים לפי שמות:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\Home\AppData\Local\Programs\Python\Python312\Lib\encodings\cp1255.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9f in position 647: character maps to <undefined>השתמשת בקובץ האקסל שהבאתי במג'יק?
-
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\encodings\cp1255.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UnicodeDecodeError: 'charmap' codec can't decode byte 0x9c in position 727: character maps to <undefined> >>>
-
@NH-LOCAL אולי יש לך פיתרון מכיוון אחר?
מצטט את השאלה המקורית@קוקר כתב בבירור | מיון קבצים מרובים לפי שמות:
יש לי תיקייה עם 300 קבצים
אני רוצה להוציא אותם מהתיקייה הנוכחית (או לחלק אותם לתתי תיקיות באותה תיקיה)
ולחלק אותם ל3 תיקיות לפי נושאים.
בקובץ אקסל יש לי עמודה אחת עם שמות כל הקבצים כפי שהם מופיעית בתיקייה הנוכחית
בעמודה ליד מופיע לאיזה תיקייה זה אמור להיות.
אני יכול לסנן את הקבצים שאמורים להגיע לתיקייה מס' 1
להעתיק את כל שמות הקבצים ולהדביק אותם באיזה שורת קוד שתוציא אותם מהתיקייה הנוכחית ולהעביר לתיקיה מס' 1.
וכן הלאה לשאר הקבצים. -
@קוקר נסה את הקוד המצורף.
תכניס כמובן את הנתיבים המתאימים
זה קוד שאמור להיות מאוד פשוט, והוא נבנה באמצעות gpt4oimport os import shutil import csv # נתיב לקובץ ה-CSV csv_file_path = 'path_to_your_file.csv' # נתיב לתיקייה הנוכחית שבה נמצאים הקבצים current_folder_path = 'path_to_your_current_folder' # פתיחת קובץ ה-CSV וקריאת התוכן with open(csv_file_path, newline='', encoding='utf-8') as csvfile: reader = csv.reader(csvfile) next(reader) # דילוג על כותרות העמודות אם קיימות for row in reader: file_name, target_folder = row source_path = os.path.join(current_folder_path, file_name) target_folder_path = os.path.join(current_folder_path, target_folder) target_path = os.path.join(target_folder_path, file_name) # יצירת התיקייה אם לא קיימת if not os.path.exists(target_folder_path): os.makedirs(target_folder_path) # העברת הקובץ if os.path.exists(source_path): shutil.move(source_path, target_path) else: print(f"File {file_name} does not exist in the source directory.") print("Files have been successfully moved to their respective folders.")