我无法理解为什么我的代码无法正常工作。 我想按照以下顺序重命名特定文件夹中的每个文件: Foldername_1 Foldername_2 Foldername_3 等...
我写的代码应该增加' num'每次重新循环for循环时变量为1。
path = os.getcwd()
filenames = os.listdir(path)
for filename in filenames:
num = 0
num = num + 1
name = "Foldername_{}".format(num)
os.rename(filename, "{}".format(name))
但是我收到此错误:
FileExistsError:[WinError 183]无法在该文件中创建文件 已存在:' 90' - > ' Foldername_1'
答案 0 :(得分:1)
您为每次迭代设置num
为0 。移动循环的num = 0
:
num = 0
for filename in filenames:
num = num + 1
name = "Foldername_{}".format(num)
os.rename(filename, "{}".format(name))
您不需要再次格式化name
变量; "{}".format(name)
生成与name
中已有的字符串相同的字符串。而不是手动递增数字,您可以使用enumerate()
function为您生成数字:
for num, filename in enumerate(filenames, 1):
name = "Foldername_{}".format(num)
os.rename(filename, name)
考虑到os.listdir()
不按字母顺序列出名称;相反,您将获得基于磁盘上目录结构的订单,该结构取决于创建的订单文件和确切的文件系统实现。您可能想要手动排序:
for num, filename in enumerate(sorted(filenames), 1):