Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-对文件路径(如Windows)进行排序_Python_Windows_Sorting_Filepath - Fatal编程技术网

Python-对文件路径(如Windows)进行排序

Python-对文件路径(如Windows)进行排序,python,windows,sorting,filepath,Python,Windows,Sorting,Filepath,我目前正在尝试在Windows资源管理器中对同一个区域中的字符串文件路径列表进行排序。我一直在研究一些已经发布的自然/人工排序算法(尤其是natsort包中的算法),但它们都有相同的问题 给定一个包含文件“0.jpg”、“00.jpg”和“000.jpg”的目录,Windows将按精度递减的顺序对它们进行排序,即:000.jpg,00.jpg。0.jpg 我尝试过的所有算法都将按相反的顺序对它们进行排序。我不知道如何获得想要的行为。如有任何建议,将不胜感激 这应该行得通,但有点笨重: 确定列表

我目前正在尝试在Windows资源管理器中对同一个区域中的字符串文件路径列表进行排序。我一直在研究一些已经发布的自然/人工排序算法(尤其是natsort包中的算法),但它们都有相同的问题

给定一个包含文件“0.jpg”、“00.jpg”和“000.jpg”的目录,Windows将按精度递减的顺序对它们进行排序,即:000.jpg,00.jpg。0.jpg


我尝试过的所有算法都将按相反的顺序对它们进行排序。我不知道如何获得想要的行为。如有任何建议,将不胜感激

这应该行得通,但有点笨重:

  • 确定列表中最长的文件名
  • 将所有文件名用鼠标右键填充到最长名称的长度,并在文件扩展名之前插入一个高值字符,该字符不出现在任何文件名中(例如“~”)
  • 正常排序
  • 在显示结果之前删除插入的字符
所以

变成:

0~~.jpg, 00~.jpg, 000.jpg, 1~~.jpg
排序时:

000.jpg, 00~.jpg, 0~~.jpg, 1~~.jpg
最后:

000.jpg, 00.jpg, 0.jpg, 1.jpg

排序=>反转?Windows将以您选择的任何方式进行排序,这取决于该列是按升序还是降序排序……我最终这样做了,但我使用了chr(65535),而不是“~”。实际上,请将其删除。我发现了另一个使用这种方法引入的边缘情况。
000.jpg, 00.jpg, 0.jpg, 1.jpg