36

我正在使用 Windows 10 和 winpython。我有一个扩展名为 .dwt 的文件(它是一个文本文件)。我想将此文件的扩展名更改为 .txt。

我的代码不会引发任何错误,但不会更改扩展名。

from pathlib import Path

filename = Path("E:\\seaborn_plot\\x.dwt")

print(filename)

filename_replace_ext = filename.with_suffix('.txt')

print(filename_replace_ext)

在 winpython 的 ipython 窗口输出中打印出预期的结果(如下所示):

E:\seaborn_plot\x.dwt

E:\seaborn_plot\x.txt

但是当我寻找一个重命名的扩展名的文件时,扩展名并没有改变,只有原始文件存在。我怀疑windows文件权限。

4

2 回答 2

45

您必须实际重命名文件,而不仅仅是打印出新名称。

  1. 使用Path.rename()

     from pathlib import Path
     my_file = Path("E:\\seaborn_plot\\x.dwt")
     my_file.rename(my_file.with_suffix('.txt'))
    

注意:要替换目标(如果存在),请使用Path.replace()

  1. 使用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)
    

参考:

  1. os.path.splitext(路径)
  2. PurePath.with_suffix(后缀)
于 2019-01-11T19:14:51.253 回答
5

从文档:

Path.rename(target)

将此文件或目录重命名为给定的目标。在 Unix 上,如果target存在并且是一个文件,如果用户有权限,它将被静默替换。target可以是字符串或另一个路径对象。

pathlib— docs.python.org 上的面向对象的文件系统路径

你可以像这样使用它:

from pathlib import Path


filename = Path("E:\\seaborn_plot\\x.dwt")
filename_replace_ext = filename.with_suffix(".txt")
filename.rename(filename_replace_ext)
于 2019-05-28T22:33:16.467 回答