Renaming file extension using pathlib (python 3)
Solution 1
You have to actually rename the file not just print out the new name.
-
Use Path.rename()
from pathlib import Path my_file = Path("E:\\seaborn_plot\\x.dwt") my_file.rename(my_file.with_suffix('.txt'))
Note: To replace the target if it exists use Path.replace()
-
Use os.rename()
import os my_file = 'E:\\seaborn_plot\\x.dwt' new_ext = '.txt' # Gets my_file minus the extension name_without_ext = os.path.splitext(my_file)[0] os.rename(my_file, name_without_ext + new_ext)
Ref:
Solution 2
From the docs:
Path.rename(target)
Rename this file or directory to the given target. On Unix, if target exists and is a file, it will be replaced silently if the user has permission. target can be either a string or another path object.
pathlib
— Object-oriented filesystem paths on docs.python.org
You could use it like this:
from pathlib import Path
filename = Path("E:\\seaborn_plot\\x.dwt")
filename_replace_ext = filename.with_suffix(".txt")
filename.rename(filename_replace_ext)
user3398600
Updated on July 09, 2022Comments
-
user3398600 almost 2 years
I am using windows 10 and winpython. I have a file with a .dwt extension (it is a text file). I want to change the extension of this file to .txt.
My code does not throw any errors, but it does not change the extension.
from pathlib import Path filename = Path("E:\\seaborn_plot\\x.dwt") print(filename) filename_replace_ext = filename.with_suffix('.txt') print(filename_replace_ext)
Expected results are printed out (as shown below) in winpython's ipython window output:
E:\seaborn_plot\x.dwt
E:\seaborn_plot\x.txt
But when I look for a file with a renamed extension, the extension has not been changed, only the original file exists. I suspect windows file permissions.
-
Eryk Sun over 5 years
Path
hasrename
andreplace
methods, e.g.filename.replace(filename.with_suffix('.txt'))
. For Unix-like behavior we wantreplace
. In Windows,os.rename
orPath.rename
raisesFileExistsError
if the target exists. In Unix,rename
will silently replace an existing target. -
alejandro joya cruz about 5 yearseven-though i name the way it does at unix, it behave the same while directory and user have permissions to replaced.