متفرق پائتھون سے فائلوں کے نام بدلنا

محب علوی نے 'پائتھون' کی ذیل میں اس موضوع کا آغاز کیا، ‏جولائی 7, 2020

  1. محب علوی

    محب علوی لائبریرین

    مراسلے:
    11,896
    جھنڈا:
    Pakistan
    موڈ:
    Bookworm
    اکثر کسی فولڈر میں کسی موضوع سے متعلق فائلز کے شروع یا آخر میں غیر ضروری الفاظ یا حروف کا اضافہ ہو جاتا ہے جس سے انہیں پڑھنے میں دقت ہوتی ہے۔ مختصر پائتھون سکرپٹ سے اس مسئلے کو حل کیا جا سکتا ہے۔ عجلت میں لکھے گئے اس سکرپٹ کو مرحلہ وار اس دھاگے میں بہتر کیا جائے گا جس سے ابتدائی کوڈ اور پھر اس میں بہتری کے چند نکات کی تشریح بھی ہو جائے گی۔

    PHP:
    import os

    workingDir 
    r'C:\MEDIA\TV\Mr.Robot.S03'

    splitChar '.'
    #secondsplit = ''

    # Traverse root directory, and list directories as dirs and files as files
    for root_fileList in os.walk(workingDir):
        
    path root.split(os.sep)

        for 
    fname in fileList:
            
    fnameext os.path.splitext(fname)

            
    mainName fname.split(splitChar)  # main file name
            
    newname str(mainName[2]) + '_' str(mainName[1]) + ext
            lenpath 
    len(path) * '..'
            
    print(f'{lenpath} {newname}')
     
    • معلوماتی معلوماتی × 2
    • زبردست زبردست × 1
  2. محمداحمد

    محمداحمد لائبریرین

    مراسلے:
    22,295
    جھنڈا:
    Pakistan
    موڈ:
    Amazed
    السلام علیکم،

    ایک تو یہ کہ mainName کے انڈیکس نمبر سمجھ نہیں آئے اور اس لائن میں ایرر ہے۔ دوسری بات یہ ہے کہ اس کوڈ میں کہیں rename فنکشن نظر نہیں آ رہا۔
     
  3. دوست

    دوست محفلین

    مراسلے:
    13,071
    جھنڈا:
    Germany
    موڈ:
    Fine
    نیٹو فنکشن کیوں نہیں، فار لوپ میں رکھ کر چاہے اس کے ساتھ بھنگڑا ڈال لیں۔
    کوڈ:
    import os
    os.rename(r'file path\OLD file name.file type',r'file path\NEW file name.file type')
    سورس
     
  4. محب علوی

    محب علوی لائبریرین

    مراسلے:
    11,896
    جھنڈا:
    Pakistan
    موڈ:
    Bookworm
    یہ کوڈ اصل میں جلدی جلدی شیئر کیا تھا تاکہ ابن سعید اردو کی توجہ اس طرف مبذول کروا کر توجہ بحث سے ہٹا کر کوڈ کی طرف دلائی جا سکے۔

    یہ کوڈ اصل میں مندرجہ ذیل فائلوں کی ساخت کے لیے بنایا گیا تھا۔

    کوڈ:
    group.MrRobot_S03.Ep01.txt
    group.MrRobot_S03.Ep02.txt
    group.MrRobot_S03.Ep03.txt
    group.MrRobot_S03.Ep04.txt
    ان فائلوں کو اگر '.' ڈاٹ حرف کی بنیاد پر توڑا جائے
    PHP:
     mainName fname.split(splitChar)
    تو فائلوں کی مندرجہ ذیل لسٹیں بن جائیں گی۔

    کوڈ:
    ['group', 'MrRobot_S03', 'Ep01']
    ['group', 'MrRobot_S03', 'Ep02']
    ['group', 'MrRobot_S03', 'Ep03']
    ['group', 'MrRobot_S03', 'Ep04']
    
    اس کے بعد کی سطروں سے نئی فائل کا نام بنایا گیا ہے اورپھر اسے پرنٹ کیا گیا ہے
    PHP:
    newname str(mainName[2]) + '_' str(mainName[1]) + ext
    lenpath 
    len(path) * '..'
    print(f'{lenpath} {newname}')
    اس کا نتیجہ یوں ظاہر ہو گا

    کوڈ:
    ........ Ep01_MrRobot_S03.txt
    ........ Ep02_MrRobot_S03.txt
    ........ Ep03_MrRobot_S03.txt
    ........ Ep04_MrRobot_S03.txt
     
    آخری تدوین: ‏اگست 5, 2020
  5. محب علوی

    محب علوی لائبریرین

    مراسلے:
    11,896
    جھنڈا:
    Pakistan
    موڈ:
    Bookworm
    جی بالکل پائتھون کا فنکشن ہی استعمال ہو گا فائلوں کا نام بدلنے کے لیے۔ پروگرام میں پہلے صرف پرنٹ کروا کر دیکھا گیا کہ نام صحیح تبدیل ہو گیا ہے کہ نہیں۔

    تسلی کے بعد یہ لائن شامل ہو گی۔
    PHP:
    os.rename(fnamenewname)
     
  6. محب علوی

    محب علوی لائبریرین

    مراسلے:
    11,896
    جھنڈا:
    Pakistan
    موڈ:
    Bookworm
    کوڈ کا ابتدائی شکل شیئر کی تھی تاکہ اسے سمجھنے اور بہتر کرنے میں آسانی ہو۔ اب جدید شکل کچھ یوں ہے جسے ہم دوبارہ بتدریج آخری شکل تک مرحلہ وار بنا سکتے ہیں۔

    PHP:
    import os
    #import tkinter as tk
    #from tkinter import filedialog
    from gooey import GooeyGooeyParser

    #tkroot = tk.Tk()  # Initializing Tkinter
    #workingDir = filedialog.askdirectory(parent=tkroot,initialdir="/",title='Please select a directory')
    #workingDir = r'F:\TV MEDIA\Dirilis Ertugrul\Season 2'
    #fileList = os.listdir(workingDir)
    # firstSplit = 'Module_'
    # secondSplit = '_SUB'
    @Gooey(program_name="Rename Files in Folder")
    def renameFiles():
        
    parser GooeyParser(description='Create Quarterly Marketing Report')
        
    parser.add_argument('data_directory',
                            
    action='store',
                            
    widget='DirChooser',
                            
    help="Source directory that contains files")
        
    parser.add_argument('FirstSplitPattern'help="First Pattern to split file Name")
        
    parser.add_argument('SecondSplitPattern'help="Second Pattern to split file Name")
        
    parser.add_argument('PrintFileName'help="Indicator for just printing the new name instead of rename file")

        
    args parser.parse_args()
        
    workingDir args.data_directory
        firstSplit 
    args.FirstSplitPattern
        secondSplit 
    args.SecondSplitPattern
        printNameOnly 
    args.PrintFileName

        
    # Traverse root directory, and list directories as dirs and files as files
        
    for rootdirsfileList in os.walk(workingDir):
            
    os.chdirroot )
            
    path root.split(os.sep)
            print((
    len(path) - 1) * '***'os.path.basename(root))
           
            for 
    filename in fileList:
                
    fnameext os.path.splitext(filename)

                if 
    firstSplit in fname:
                    
    fileSplit1 fname.split(firstSplit)[1]
                    if 
    secondSplit != '':
                        
    mainName fileSplit1.split(secondSplit)[0#main file name
                    
    else:
                        
    mainName fileSplit1
                   
                    newname 
    mainName.strip() + ext
                    
    print(len(path) * '...'newname)
                    if 
    printNameOnly == 'YES':
                        print(
    newname)
                    else:
                        
    os.rename(filenamenewname)
                else:
                    print(
    f'Could not find Characters {firstSplit} or {secondSplit} in {filename}')
    if 
    __name__ == "__main__":
        
    renameFiles()
     

اس صفحے کی تشہیر