我想使用python重命名目录中的所有子文件夹。我认为这很容易,但因为我是python和编程的新手,所以我假设我缺少一些关键。
这是我的文件夹结构:C:\ Users \ DBailey \ Desktop \ Here
- 这个文件夹有两个文件夹:3303_InfigenSolar和3304_FurnaceCanyon
- 在这些文件夹中有4个其他子文件夹,在这些文件夹中有一堆文件。
我想仅批量重命名 3303_InfigenSolar 和 3304_FurnaceCanyon ,以便他们阅读 3303_InfigenSolar_08315 和 3304_FurnaceCanyon_08315
到目前为止,这是我的代码:
price
当我运行脚本时 - 只打印一个文件夹(只有两个文件夹,但会添加更多文件夹),我收到以下错误:
value_type
答案 0 :(得分:2)
您需要os.path.join:
_dir = 'C:\Users\DBailey\Desktop\Here'
os.rename(os.path.join(_dir, fn), os.path.join(_dir,newname))
python正在你的cwd中查找fn
,你需要使用join告诉python文件实际所在的位置,除非你cwd实际上是文件所在的目录。
如果要重命名多个目录,还需要确保为循环中的每个目录创建一个唯一的名称。
dte = str(date)
for ind,fn in enumerate(folder,1):
os.rename(os.path.join(_dir, fn), os.path.join(_dir,"{}_{}".format(dte,ind)))
您可以使用任何想要区分文件夹名称的内容,只需确保它们是唯一的。这也假设你只有目录,如果你有文件,那么你需要检查每个fn实际上是一个目录:
dte = str(date)
folder = (d for d in os.listdir(_dir))
for ind,fn in enumerate(folder,1):
p1 = os.path.join(_dir, fn)
if os.path.isdir(p1):
os.rename(p1, os.path.join(_dir,"{}_{}".format(dte,ind)))
答案 1 :(得分:1)
看起来像是' fn'在newname中引用之前未初始化。 你可能真的不需要新名字,就像Padraic说的那样,减去新名字:
os.rename(os.path.join(dir,fn), os.path.join(dir, fn + "_" + str(date)))