我想像 Windows 一样在 python 中对文件名进行排序。我准备了四个文件(或文件夹)。
1. [abc]abc【abc】
2. [abc]abcabc【abc】
3. 001
4. 002
这些按 Windows 排序(升序):1 -> 2 -> 3 -> 4
但在 python 中,当使用排序函数或 natsort(ns.PATH) 时:3 -> 4 -> 2-> 1
如何解决这个问题呢?
如果您希望它按照文件资源管理器默认放置文件名的顺序,那么您将首先需要文件夹,然后是文件,并且这两个部分都按字母顺序排列。
下面的代码以与列表中的文件资源管理器完全相同的顺序存储目录中的所有文件this_dir
。
import os
folder_path = "C:\\Path\\To\\Your\\Folder"
files = []
folders = []
for f in os.listdir(folder_path):
fname = os.path.join(folder_path, f)
if os.path.isdir(fname):
folders.append(f)
if os.path.isfile(fname):
files.append(f)
this_dir = folders + files
print("\n".join([" - " + f for f in this_dir]))
输出:
- abc
- abcabc
- 001.txt
- 002.txt
- abc.txt
- abcabc.txt
这与文件资源管理器列出它们的顺序相同。(abc
并且abcabc
都是文件夹)