How to rename a file using Python

后端 未结 12 1431
借酒劲吻你
借酒劲吻你 2020-11-22 13:47

I want to change a.txt to b.kml.

相关标签:
12条回答
  • 2020-11-22 14:22

    Use os.rename:

    import os
    
    os.rename('a.txt', 'b.kml')
    
    0 讨论(0)
  • 2020-11-22 14:24

    File may be inside a directory, in that case specify the path:

    import os
    old_file = os.path.join("directory", "a.txt")
    new_file = os.path.join("directory", "b.kml")
    os.rename(old_file, new_file)
    
    0 讨论(0)
  • 2020-11-22 14:29

    If you are Using Windows and you want to rename your 1000s of files in a folder then: You can use the below code. (Python3)

    import os
    
    path = os.chdir(input("Enter the path of the Your Image Folder :  ")) #Here put the path of your folder where your images are stored
    
    image_name = input("Enter your Image name : ") #Here, enter the name you want your images to have
    
    i = 0
    
    for file in os.listdir(path):
    
        new_file_name = image_name+"_" + str(i) + ".jpg" #here you can change the extention of your renmamed file.
        os.rename(file,new_file_name)
    
        i = i + 1
    
    input("Renamed all Images!!")
    
    0 讨论(0)
  • 2020-11-22 14:32
    import shutil
    
    shutil.move('a.txt', 'b.kml')
    

    This will work to rename or move a file.

    0 讨论(0)
  • 2020-11-22 14:33
    import os
    import re
    from pathlib import Path
    
    for f in os.listdir(training_data_dir2):
      for file in os.listdir( training_data_dir2 + '/' + f):
        oldfile= Path(training_data_dir2 + '/' + f + '/' + file)
        newfile = Path(training_data_dir2 + '/' + f + '/' + file[49:])
        p=oldfile
        p.rename(newfile)
    
    0 讨论(0)
  • 2020-11-22 14:36

    As of Python 3.4 one can use the pathlib module to solve this.

    If you happen to be on an older version, you can use the backported version found here

    Let's assume you are not in the root path (just to add a bit of difficulty to it) you want to rename, and have to provide a full path, we can look at this:

    some_path = 'a/b/c/the_file.extension'
    

    So, you can take your path and create a Path object out of it:

    from pathlib import Path
    p = Path(some_path)
    

    Just to provide some information around this object we have now, we can extract things out of it. For example, if for whatever reason we want to rename the file by modifying the filename from the_file to the_file_1, then we can get the filename part:

    name_without_extension = p.stem
    

    And still hold the extension in hand as well:

    ext = p.suffix
    

    We can perform our modification with a simple string manipulation:

    Python 3.6 and greater make use of f-strings!

    new_file_name = f"{name_without_extension}_1"
    

    Otherwise:

    new_file_name = "{}_{}".format(name_without_extension, 1)
    

    And now we can perform our rename by calling the rename method on the path object we created and appending the ext to complete the proper rename structure we want:

    p.rename(Path(p.parent, new_file_name + ext))
    

    More shortly to showcase its simplicity:

    Python 3.6+:

    from pathlib import Path
    p = Path(some_path)
    p.rename(Path(p.parent, f"{p.stem}_1_{p.suffix}"))
    

    Versions less than Python 3.6 use the string format method instead:

    from pathlib import Path
    p = Path(some_path)
    p.rename(Path(p.parent, "{}_{}_{}".format(p.stem, 1, p.suffix))
    
    0 讨论(0)
提交回复
热议问题