我正在尝试使用其中第一个文件的名称重命名几个目录。
我正在尝试:
这是我到目前为止所获得的,但是没有用。我知道代码是错误的,但是在修复代码之前,我想知道逻辑是否正确。有人可以帮忙吗?
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)
谢谢!
您的代码中存在一些问题:
os.walk
对其进行了迭代。这不是一个好主意,os.walk
为您提供了一个生成器,这意味着它会在您迭代元素时创建元素,因此在循环中重命名事物会使其混淆。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]
读取的值,因此什么都不做。os.rename(d, f)
中,首先,由于之前的循环永远不会运行,因此d
和f
将没有值,而且还假定d
和f
都来自dirs
和[ C0],它们将被指定为相对于其父目录的路径,而不是相对于您当前目录(files
)的路径,因此重命名将失败。此代码应根据需要工作:
.