这个问题是本文的后续内容:Python-根据子文件夹和文件名重命名子文件夹中的文件。
我正在尝试遍历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_uu”last“\uu”I…
,它正确地显示保存在C:\temp\11182014\
中的名为VA1122F.A14
的文件将被重命名为My_VA1122F\u 11182014.A14
。
但是,os.rename命令返回以下错误:
"必须是字符串,而不是列表。"
这似乎是由于我在os.rename命令中使用了“文件名”。据我所知,os.rename的第一个参数应该是旧文件名。当我运行“打印文件名”时,它确实返回了给定子文件夹中所有文件的列表,所以这个错误是有意义的。我似乎不知道如何一次一个地抓取旧文件名。
我也尝试了这些,但每个都返回了一个错误:
os.rename(os.path.join(root, filename),"My_"+last+"_"+i[0]+"_"+root.split("/")[-1]+"."+i[1])
错误:返回安装python的文件夹以及关于字符串作为左操作数的错误。
os.rename(root + os.sep + filename,"My_"+last+"_"+i[0]+"_"+root.split("/")[-1]+"."+i[1])
错误:无法连接'str'amd'list'对象
我已经浏览了文档和许多帖子,但无法找出我遗漏了什么。谢谢你的帮助。
您正试图传递一个文件名列表来重命名命令。你会在内部循环中得到一个文件名
for root,dirname,filenames in os.walk(path): for filename in filenames: i = filename.split(".")
你可以用
os.rename(os.path.join(root, filename),"My_"+last+"_"+i[0]+"_"+root.split("/")[-1]+"."+i[1])
PS:不强烈建议使用“”连接字符串,因此最好使用字符串格式。
os.rename(os.path.join(root, filename),"My_{last}_{start}_{sub_fold}.{ext}".format(last=last, start=i[0], sub_fold=root.split("/")[-1], ext=i[1]))
问题内容: 我有一个包含文件夹结构的zip文件,例如 主文件夹/ subFolder1 / subFolder2 / subFolder3 / 文件3.1 文件3.2 我想使用Java 重命名文件夹,例如在该zip文件中。 有没有比提取整个zip文件并使用新的文件夹名称重新创建一个新的方法更简单的方法? 问题答案: Zip是一种存档格式,因此变异通常涉及重写文件。 zip的某些特殊功能也会受阻(z
问题内容: 我尝试解压缩150个zip文件。所有zip文件都使用不同的名称,它们都分散在一个大文件夹中,该文件夹分为许多子文件夹和子子文件夹。我想将每个存档提取到与原始zip文件名相同名称的单独文件夹中,与原始zip文件位于同一位置。我的代码是: 我运行代码后,什么都没有发生。在此先感谢您的任何帮助。 问题答案: 更新: 最后,这段代码对我有用:
问题内容: 我想浏览当前文件夹及其所有子文件夹,并获取所有扩展名为.htm | .html的文件。我发现可以找到一个对象是目录还是文件,如下所示: 最后,我想将所有文件及其路径放在一个数组中。这样有可能吗? 问题答案: 您可以用来递归遍历目录及其所有子目录: 要构建这些名称的列表,可以使用列表理解:
Python版本:2.7.13 操作系统:Windows 因此,我正在编写一个脚本,根据文件名中包含文件夹名的要求,将各种名称的文件复制到特定文件夹中。(我对这一点相当陌生,只是想在工作中创建更高效的脚本——我查看了大量StackOverflow页面和web上的一些地方,但找不到与此特定任务相关的Python) 我已经将文件夹转换为一个字符串列表,我可以搜索文件名,但是当我将它们复制到上面时,它们
我有一个像这样的文件夹 应用程序 供应商 引导程序 公开的 文件夹 img 当我从url访问时http://example.com/img/img.png它工作,但当我喜欢访问http://example.com/img/我得到禁止403,我需要的是重定向或显示该页面没有找到我的。htaccess看起来像这样。 选项-多视图选项-索引重写引擎打开
我的Mercurial文件夹结构如下,“temp”位于文件夹的根目录中。 我想忽略临时文件夹及其子文件夹中的所有内容,除了名为“世界”的文件(只有“世界”而不是“1world”或“world.txt”等) 使用. hgignore中的语法:regexp,我可以匹配temp 任何指导都将不胜感激! 更新 通过手动列出每个文件夹,我成功地获得了想要的结果: 然而,我更希望我能用一个模式匹配所有子文件夹