从文件夹内的文件名中删除某些字符串

Remove certain strings from filenames inside a folder

我有一个包含一堆文本文件的文件夹。

32167.pdf.txt
20988.pdf.txt
45678.pdf.txt
:
:
99999.pdf.txt

我想从该文件夹中的所有文件名中删除“.pdf”(如下所示)。

32167.txt
20988.txt
45678.txt
:
:
99999.txt

我尝试使用 os 来完成,但抛出一个错误 FileNotFoundError: [Errno 2] No such file or directory: '.txt' -> '.txt'

这是我的代码:

for filename in os.listdir('/Users/CodingStark/folder/'):
    os.rename(filename, filename.replace('.pdf', ''))

我想知道除了使用 os 之外,还有其他方法可以实现此目的吗?或者 os 是最快的方法吗?谢谢!!

我想我知道出了什么问题。 filename 将只包含文件名,而不是完整路径。试试这个:

dir = '/Users/CodingStark/folder/'
for filename in os.listdir(dir):
    os.rename(dir + filename, dir + filename.replace('.pdf', ''))

在处理路径时,你真的应该使用 pathlib。它有大多数 os 功能的替代品,而且使用起来更有意义,而且绝对更便携。

手头任务:

from pathlib import Path

root = Path('/Users/CodingStark/folder/')
for path in root.glob("*.pdf.txt"):
    path.rename(path.with_name(path.name.replace(".pdf", "")))
#               or:
#               path.with_suffix('').with_suffix(".txt")
#               or:
#               str(path).replace(".pdf", "")