此問題是此後的後續處理:Python - rename files in subfolders based on subfolder and file name。Python - 根據子文件夾和文件名重命名子文件夾中的文件II
我試圖循環訪問C:\temp\
中子文件夾內的文件,並以指定的方式重命名每個文件。下面是我到目前爲止的代碼:
begin program.
import os
path = "C:/temp/"
for root,dirname,filename in os.walk(path):
for i in filename:
i = i.split(".")
first = i[1][0]
last = i[0][-1]
#print filename
print "My_"+last+"_"+i[0]+"_"+root.split("/")[-1]+"."+i[1]
os.rename(filename,"My_"+last+"_"+i[0]+"_"+root.split("/")[-1]+"."+i[1])
end program.
當我運行線,print "My_"+last+"_"+i ...
,它正確地顯示了一個名爲VA1122F.A14
保存在C:\temp\11182014\
文件將會被重命名爲 My_F_VA1122F_11182014.A14
。
然而,os.rename命令返回此錯誤:
"must be string, not list."
這似乎是由於我在os.rename命令使用「文件名」的。從我讀過的,os.rename的第一個參數應該是舊的文件名。當我運行「打印文件名」時,它確實返回了給定子文件夾中所有文件的列表,所以這個錯誤是有道理的。我似乎無法弄清楚如何一次抓取一箇舊文件名。
我也嘗試過這些,但每次返回了一個錯誤:
os.rename(os.path.join(root, filename),"My_"+last+"_"+i[0]+"_"+root.split("/")[-1]+"."+i[1])
Error: Returns the folder where python is installed and an error about a string as left operand.
os.rename(root + os.sep + filename,"My_"+last+"_"+i[0]+"_"+root.split("/")[-1]+"."+i[1])
Error: cannot concatenate 'str' amd 'list' objects
我已經走遍了文檔和很多帖子,但無法弄清楚什麼我失蹤。感謝您的任何幫助。
作爲一個提示,你應該像'print type(filename)'那樣做一個'print'語句。我敢打賭,這不會回來'串'... – Matt