Rename and move file with Python

后端 未结 4 1065
囚心锁ツ
囚心锁ツ 2021-02-07 03:05

I have python script that compares existing file names in a folder to a reference table and then determines if it needs to be renamed or not.

As it loops through each fi

相关标签:
4条回答
  • 2021-02-07 03:29

    To do both of the operations, you can use the os.rename(src, dest) function.

    You should have the wanted directory to save the file in, and the new file name. You can do this for every file you run across in your loop.

    For example:

    # In Windows
    dest_dir = "tmp\\2"
    new_name = "bar.txt"
    current_file_name = "tmp\\1\\foo.txt"
    os.rename(current_file_name, os.path.join(dest_dir, new_name))
    

    The rename function allows you to change the name of the file and it's folder at the same time.

    To prevent any errors in renaming and moving of the file, use shutil.move.

    0 讨论(0)
  • 2021-02-07 03:34

    os.rename (and os.replace) won't work if the source and target locations are on different partitions/drives/devices. If that's the case, you need to use shutil.move, which will use atomic renaming if possible, and fallback to copy-then-delete if the destination is not on the same file system. It's perfectly happy to both move and rename in the same operation; the operation is the same regardless.

    0 讨论(0)
  • 2021-02-07 03:39

    Yes you can do this. In python you can use the move function in shutil library to achieve this.

    Lets say on linux, you have a file in /home/user/Downloads folder named "test.txt" and you want to move it to /home/user/Documents and also change the name to "useful_name.txt". You can do both things in the same line of code:

    import shutil
    
    shutil.move('/home/user/Downloads/test.txt', '/home/user/Documents/useful_name.txt')
    

    In your case you can do this:

    import shutil
    
    shutil.move('oldname', 'renamedfiles/newname')
    

    Cheers.

    0 讨论(0)
  • 2021-02-07 03:40

    Create a Python file in your desired directory and write something like that :

    import os
    
    for filename in os.listdir("."):
        if(filename ...):
            newFilename = ...
            os.rename(filename, newFilename)
    
    0 讨论(0)
提交回复
热议问题