【问题标题】:sorting folders in a directory ( combination of alphabets and numbers) in python在python中对目录中的文件夹(字母和数字的组合)进行排序
【发布时间】:2020-08-05 22:35:17
【问题描述】:

我想修改目录中的文件夹名称并对它们进行排序,如果有人可以帮助我,我将不胜感激。

例如:我有一个目录,其中包含 sam1 .... sam100000(最好我们不知道我们有多少个文件夹)。我想要在输出目录中对名称进行排序和修改,例如,如果最后一个文件夹有 6 个数字,第一个文件夹看起来像 sam000001(添加 5 个零),对于 sam15,它将是 sam000015(添加 4 个零)。

提前致谢

import os
import os.path  

E = 0

for _, dirnames, filenames in os.walk('path'):


    E += len(dirnames)

formating= "{0:6}"
enum=["{0:6}".format(i) for i in range (1,E)]
original=[i for i in range (1,E)]
start='sam'
for i in original :
    os.rename(start+str(i),start+enum[i])

【问题讨论】:

  • 欢迎山姆!尽量在你的问题中更简洁,并表明你自己对此进行了一些思考。您可能想看看os library 和这个related question

标签: python list sorting directory format


【解决方案1】:

从一个文件夹名,你需要两件事

  • 新名称:构建格式"{}{:0%sd}" % padding_size => "{}{:06d}"

    oldname = "folder15"
    padding_size = 6
    
    parts = re.search("(.*?)(\d+)", oldname).groups()
    newname = ("{}{:0%sd}" % padding_size).format(parts[0], int(parts[1]))
    print(newname) # folder000015
    
  • 使用os.rename(oldpath, newpath)重命名

【讨论】:

  • 谢谢,但我有一个目录,里面有这么多文件夹(我不想打开 GUI 来查看),但我从一些信息中知道,里面的文件夹以类似的名称开头你提到了文件夹+数字。我想要做的是编写一个代码来获取目录并遍历目录内的所有文件夹(而不是文件夹内包含的内容)并修改其名称的所有数字部分,以便它们具有相同大小的数字(如你给出了一个示例 folder15 >>> folder000015 ) ,但是这个添加应该自动完成,而不是我把它交给代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
  • 2023-03-12
  • 2013-07-27
  • 1970-01-01
  • 2021-05-15
相关资源
最近更新 更多