2017-05-24 202 views
0

我想重命名目录中的文件,以便它的新名称是原始名称,后跟一个空格+“17-”+递增递增的数字。在Python 2.7批量重命名文件

下面的代码只是从151向上重命名文件。我如何保留原始名称,添加文本“17-”和数字?

import os 
path = 'C:\Users\dcs\Desktop\Test direct' 
files = os.listdir(path) 
i = 151 

for file in files: 
    os.rename(os.path.join(path, file), os.path.join(path, str(i)+'.TIF')) 
    i = i+1 

回答

1

只需编写该连接表达式即可。如果我正确理解您的详细资料,您的新的循环体将

new_name = file + " 17-" + str(i) + ".TIF" 
os.rename(os.path.join(path, file), 
      os.path.join(path, new_name)) 
i += 1 

这将改变文件的“ABC”到文件“ABC 17-151.TIF”;下一个将包含“17-152”,依此类推。

捂脸

file是内置型。更改循环索引。

for fname in files: 
    new_name = fname + " 17-" + str(i) + ".TIF" 
    os.rename(os.path.join(path, fname), new_name) 
    i += 1 
+0

'file'仍然是一个字符串?在'rename'命令之前尝试'打印类型(文件)。在我的Python中,'listdir'返回一个字符串列表。 – Prune

+0

这很奇怪:'file'是一个泛型*类型* ??我无法用你的代码重现这一点。我已经在我的本地目录中尝试了我的解决方案,并且它按预期工作,为变量类型提供''。什么Python?您是否将此代码剪切并粘贴到您的环境中以确保我们运行的是相同的东西?我所做的只是用“”替换你的路径。“并禁用“重命名”命令。 – Prune

+0

'fname'在for语句中定义。 – Prune

0

如果我没有理解上面修剪的建议下,我显然不,它看起来像:

import os 
path = 'C:\Users\dcs\Desktop\Test direct' 
files = os.listdir(path) 
i = 151 

#The part that I want to strip the extensions from 
for file in files: 
    new_name = file[:-3] 

#The part that words correctly (thanks Prune) 
for fname in files: 
    new_name = fname + " 17-" + str(i) + ".TIF" 
    os.rename(os.path.join(path, fname), new_name) 
    i += 1 

但是第一部分,旨在剥离文件的它的扩展不工作。