代码之家  ›  专栏  ›  技术社区  ›  CinziaG

如何使用Python顺序重命名文件夹中的文件,而不以混乱的方式重命名文件?

  •  0
  • CinziaG  · 技术社区  · 1 年前

    嗨,我希望有人能帮助我, 我正在尝试重命名文件夹中的一些.png, 0磅/平方英寸 1.简体中文 2.磅 。。。 3000磅

    问题是它以一种混乱的方式处理文件,例如10.png将其重命名为3.png 相反,它应该是11png等。

    我希望它改为这样重命名: 0.png重命名为->1.简体中文 1.png重命名为->2.磅 。。。 10.png重命名为->11磅

    一些建议? 非常感谢。

    我试过这样做:

    import os
    
    path = r'/Desktop//Name'
    newpath = r'/Desktop/Name2'
    
    count = 1
    for f in os.scandir(path):
        if str(f.name).endswith('.png'):
            new_file = '' + str(count)+'.png'
            src = os.path.join(path, f.name)
            dst = os.path.join(newpath, new_file)
            os.rename(src, dst)
            count += 1
     
    os.scandir(path).close()
    
    2 回复  |  直到 1 年前
        1
  •  0
  •   pedwards    1 年前

    我写这篇文章没有经过测试,但这个怎么样?它应该满足你的需求。目录中似乎有*.png文件以外的其他文件。如果没有,那么您可以将其简化一点。。。

    import os
    import shutil
        
        path = r'/Desktop//Name'
        newpath = r'/Desktop/Name2'
        
        for f in os.scandir(path):
            if str(f.name).endswith('.png'):
                file_number = int(str(f.name).split('.')[0])
                new_file_number = file_number + 1
                new_file = '%s.png' % new_file_number
                src = os.path.join(path, f.name)
                dst = os.path.join(newpath, new_file)
                shutil.move(src, dst)
         
        os.scandir(path).close()
    
        2
  •  0
  •   James    1 年前

    如果您只是想将所有文件名增加1,您可以将名称转换为int,添加1,然后重命名。

    for f in os.scandir(path):
        if str(f.name).endswith('.png'):
            new_file_name = str(int(f.name.rsplit('.', 1)) + 1) + ".png"
            src = os.path.join(path, f.name)
            dst = os.path.join(newpath, new_file_name)
            os.rename(src, dst)