שאלה | אינדקס כל הסקריפטים שלי - שאלות על כלל הסקריפטים ובקשות ליצירת סקריפטים חדשים
-
@חיים-שנקר כתבתי עכשיו קוד כזה בפייתון
הוא לא מחליף שמות לתיקיות - אפשר לעשות גם את זה אם צריך
ויש לו חסרון משמעותי - הוא הופך גם את הסיומת - אין לי כוח לחשוב עכשיו איך לסדר את זה - אז בינתיים זה רק לרעיון אבל לא מתאים לשימושimport os def rename_files(path): for root, dirs, files in os.walk(path): for name in files: if os.path.isfile(os.path.join(root, name)): oldname = os.path.join(root, name) newname = os.path.join(root, name[::-1]) os.rename(oldname, newname) path = input("Enter the path to the folder: ") if os.path.exists(path): rename_files(path)
-
@מתכנת-חובב האם אפשר בפייתון לעשות קוד כזה שיהפוך גם את שם האמן האלבום הכותרת וכו' להם פשוט אין סיומת ולפחות להם זה יעזור
-
@מתכנת-חובב ```
ChatGPT קרדיטimport os def rename_files(path): for root, dirs, files in os.walk(path): for name in files: if name.endswith('.mp3'): oldname = os.path.join(root, name) title, ext = os.path.splitext(name) # split the file name into the title and extension newname = os.path.join(root, title[::-1] + ext) # reverse the title and join it with the extension os.rename(oldname, newname) path = os.path.dirname(os.path.abspath(__file__)) rename_files(path)
-
@חיים-שנקר זה יעבוד על התיקיה הנוכחית של הסקריפט (אם הבנתי נכון, הוא עשה את זה קצת מסובך)
וזה יעבוד רק על קבצי mp3 - אפשר להוריד את זה אם תמחק את ה if וכו' (אולי תצטרך רק לסדר את הטאבים מחדש) -
@מתכנת-חובב זה יעבוד גם בלי לסדר.
-
@מתכנת-חובב זה לשמות קבצים כותרת אמן ואלבום זה פועל גם בתתי תיקיות כמובן שזה דורש את הספריה mutagen
ChatGPT קרדיטimport os from mutagen.mp3 import MP3 from mutagen.id3 import ID3, TIT2, TALB, TPE1, ID3NoHeaderError def rename_and_reverse_tags(path): for root, dirs, files in os.walk(path): for name in files: if name.endswith('.mp3'): oldname = os.path.join(root, name) title, ext = os.path.splitext(name) newname = os.path.join(root, title[::-1] + ext) os.rename(oldname, newname) filepath = newname try: audio = MP3(filepath, ID3=ID3) except ID3NoHeaderError: audio = MP3(filepath) audio.add_tags() audio.tags.add(TIT2(text=audio['TIT2'][0][::-1])) audio.tags.add(TALB(text=audio['TALB'][0][::-1])) audio.tags.add(TPE1(text=audio['TPE1'][0][::-1])) audio.save() path = os.path.dirname(os.path.abspath(__file__)) rename_and_reverse_tags(path)
-
@NH-LOCAL
דבר ראשון אני מאד נהנה מהסקריפטים שלך
אני זקוק ביותר לסקריפט ששואב קבצים ממלא תתי תקיות.
כלומר אם יש לי תקיה שיש בתוכה 10 קבצים +10 קיות תקיות ושבכל תקיה יש גם איזה 2 תקיות +5 קבצים)
שיקח את כל הקבצים שנמצאים בכל התקיות ותתי תתי התקיות וישים אותם בתקיה אחת.האם זה שייך?
-
@מתכנת-חובב כתב בשאלה | אינדקס כל הסקריפטים שלי - שאלות על כלל הסקריפטים ובקשות ליצירת סקריפטים חדשים:
ויש לו חסרון משמעותי - הוא הופך גם את הסיומת - אין לי כוח לחשוב עכשיו איך לסדר את זה
אני לא יודע אם זה רלוונטי אבל לא יכולתי להתאפק - כדי שהוא לא ישנה את הסיומת צריך לחליף את שורה 8 כך:
במקוםnewname = os.path.join(root, name[::-1])
פשוט כך:
newname = os.path.join(root, name[-3:0:-1] + name[-3::1])
עריכה: או יותר פשוט (ומדוייק):
nameonly = name.split('.') newname = os.path.join(root, nameonly[0][::-1] + '.' + nameonly[1])
-
@מאן-דאמר-5 הדרך הראשונה תשתבש בקבצים עם סיומת ארוכה יותר מ 3 תווים
הדרך השניה תשתבש כשיש נקודה בתוך שם הקובץ עצמו
לכן צריך לבדוק את גודל המערך nameonly ואם הוא גדול מ 2 איברים אז לצרף את כולם מלבד האחרון ולהפוך ולצרף לאיבר האחרון -
@מתכנת-חובב @מאן-דאמר-5 בדיוק בשביל זה פייתון היא שפת תכנות עם ספריות ולא אשפת תכנות (כמו שכבר אמר מישהו מהנוכחים כאן בעבר...)
מסתבר שישנה מתודה פשוטה שניתן להפריד אתה את סיומת הקובץ מהשם המלא:
newname = os.path.splitext(name)[0]
@שער-השמים בעקרון זה די פשוט. אבל יש דרך עוד יותר פשוטה - חפש בחיפוש בתיקיה בצורה הזו:
*.*
ואז יופיעו לך כל הקבצים. כעת תבחר את כל הקבצים עם קונטרול + A ותעביר אותם לתיקיה חדשה.