3

我正在尝试用名称重命名文件列表,例如:This is File 132 (file no 132)to This is File 132. 所以我想要的是替换(file no *)''. 如何实现这个*,最终我想在每个文件的名称中替换这个特定的地方。这是我到目前为止写的代码。任何帮助表示赞赏。

import os

directoryname = "/media/username/New Volume/"

listFiles = os.listdir(directoryname)
print(listFiles)
for i in listFiles:
    os.rename(os.path.join(directoryname, i), os.path.join(directoryname, i.replace('(file no 132)', '')))

listFiles = os.listdir(directoryname)
print(listFiles)
4

2 回答 2

1

为此使用split,partitionfind(感谢CristiFati的建议) 之一:

os.rename(os.path.join(directoryname, i), os.path.join(directoryname, i.split(' (file no')[0]))

os.rename(os.path.join(directoryname, i), os.path.join(directoryname, i.partition(' (file no')[0]))

os.rename(os.path.join(directoryname, i), os.path.join(directoryname, i[:i.find(' (file no') -1)])

在测试中,partition它是 3 个中最快的(re对于这个简单的操作来说要慢得多)。

于 2018-01-19T12:09:09.330 回答
0

试试这个:

for i in listFiles:
     k = re.sub(r'\([^)]*\)', '', i)
     os.rename(os.path.join(directoryname, i), os.path.join(directoryname, k))

其余所有代码保持不变

于 2018-01-19T11:57:16.827 回答