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

2024-09-30 08:30:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python重命名目录中的所有子文件夹。我认为这是相当容易的,但由于我是python和编程的新手,我假设我遗漏了一些关键点。在

这是我的文件夹结构:C:\Users\dbiley\Desktop\Here

-有两个文件夹,该文件夹名为:3303_InfigenSolar和3304_FurnaceCanyon

-这些文件夹中有4个子文件夹,这些文件夹中有一堆文件。在

我只想批量重命名3303_InfigenSolar3304_FurnaceCanyon,这样它们就可以读到3303_ingensolar_083153304_FurnaceCanyon_08315

以下是我目前为止的代码:

now = datetime.datetime.now()
month = "0" + str(now.month)
day = now.day
year1 = str(now.year)
year2 = year1[2:]
date = str(month) + str(day) + str(year2)
newname = fn + "_" + str(date)

dir = 'C:\Users\DBailey\Desktop\Here'
folder = os.listdir(dir)
for fn in folder:
    print newname
    os.rename(fn, newname)

当我运行脚本时-只打印一个文件夹(只有两个文件夹,但会添加更多文件夹),我得到以下错误:

^{pr2}$

Tags: 文件夹datetimehereusersnow重命名fndesktop
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实际上是文件所在的目录。在

如果要重命名多个目录,还需要确保为循环中的每个目录创建一个唯一的名称。在

^{2}$

你可以使用任何你想区分的文件夹名称,只要确保他们是唯一的。这也假定您只有目录,如果您有文件,则需要检查每个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)))

在newname中引用之前,“fn”似乎没有初始化。 你可能真的不需要newname,只要照Padraic说的做,减去newname:

os.rename(os.path.join(dir,fn), os.path.join(dir, fn + "_" + str(date)))

相关问题 更多 >

    热门问题