重命名目录中的子文件夹 - python

时间:2015-08-03 18:59:32

标签: python batch-file rename

我想使用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

2 个答案:

答案 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)))