Python如何按照Windows的规则按文件名读取文件?

我有一个文件夹,里面文件的命名方式是 数字(不一定连续),加+号(可能有可能没有),大致是这样的:

001.png
002.png
002+.png
003.png
003+.png
004.png
005.png
005+.png

现在我希望按照数字顺序重新命名文件,规则是带 + 号的要在不带 + 号的之后,即:

001.png   -->  001.png
002.png   -->  002.png
002+.png  -->  003.png
003.png   -->  004.png
003+.png  -->  005.png
004.png   -->  006.png
005.png   -->  007.png
005+.png  -->  008.png

我是用 os.walk() 读取的文件,然后计划用 enumerate 方法通过计数修改文件名,但是Python读取文件的时候,总是把带+号的文件放在不带+号的文件前面,比如这样:

001.png
002+.png
002.png
003+.png
003.png
004.png
005+.png
005.png

请问各位有什么好办法能实现我的要求?

先遍历改名字  把带+号的改成001.png+  这样就会排在001.png后面了  然后再用你的方法改名字

把 002+.png 改成 002.png

把 002.png 改成 002+.png

文件名放到列表中,对列表中的文件名去掉扩展名重新排序

li = [
    "001.png",
    "002+.png",
    "002.png",
    "003+.png",
    "003.png",
    "004+.png",
    "004.png"
]

li.sort(key=lambda x: x.split(".")[0])
print(li)