2017-05-24 185 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 

但是第一部分,旨在剝離文件的它的擴展不工作。