使用Python内的文件名重命名目录

问题描述 投票:2回答:1

我正在尝试使用其中第一个文件的名称重命名几个目录。

我正在尝试:

  1. 列出文件夹中的文件。
  2. 确定目录。
  3. 对于每个目录,请访问它,获取其中第一个文件的名称,然后使用该名称重命名目录。

这是我到目前为止所获得的,但是没有用。我知道代码是错误的,但是在修复代码之前,我想知道逻辑是否正确。有人可以帮忙吗?

import os

for (root, dirs, files) in os.walk('.'):
    print(f'Found directory: {dirpath}')
    dirlist = []
    for d_idx, d in enumerate(dirlist):
        print(d)
    filelist = []
    for f_idex, f in enumerate(filelist):
        files.append(f)[1] 
        print(f)
    os.rename(d, f)

谢谢!

python directory rename filenames
1个回答
0
投票

您的代码中存在一些问题:

  1. 您正在重命名目录,而您用os.walk对其进行了迭代。这不是一个好主意,os.walk为您提供了一个生成器,这意味着它会在您迭代元素时创建元素,因此在循环中重命名事物会使其混淆。
  2. for d_idx, d in enumerate(dirlist):for f_idex, f in enumerate(filelist):都对之前声明为空列表的变量进行迭代,因此这些循环不会执行任何操作。另外,在第二个元素中,files.append(f)会将f附加到列表files中,但末尾的[1]意味着“获取第二个元素(基于python的索引基于0)。 append函数”-但append不返回任何内容(它修改列表,不返回新列表),因此将失败(并且无论如何您都不会使用[1]读取的值,因此什么都不做。
  3. os.rename(d, f)中,首先,由于之前的循环永远不会运行,因此df将没有值,而且还假定df都来自dirs和[ C0],它们将被指定为相对于其父目录的路径,而不是相对于您当前目录(files)的路径,因此重命名将失败。

此代码应根据需要工作:

.
© www.soinside.com 2019 - 2024. All rights reserved.