此问题是此后的后续处理: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