源码解释
首先声明一下,本文也不确定。
看源码解释:
- 返回一个列表
- 输入可以是str或者pathlike 对象
- 如果没有输入,会输出当前目录的内容
- 在有些平台,路径会被作为源文件的指标(指针?)
- 返回的列表是无序状态,不会包含’.’, ’ . . '(linux系统路径会有)
更深的源码扒不到,就先不管了orz
做一个实验
这是文件夹,输出是:
显然是按照字符顺序的。
换一个文件夹
可以看出,输出顺序没有明显的规律,如果是一个个字符进行对比,1805以1开头,应该在0001前面。如果以字符串长短对比,最长的字符串只在第3位。
再看一个小实验
这个文件夹是从0到1769
输出结果是:
显然是先以第一个数字排序,先是0,再排以1开头的,1开头的数字里面先排0…
显然是有一定顺序的。
总结
是有一定顺序的,但无法胜任复杂的情况。
在最后一个应用场景下,我们可以给位数较低的文件改名,通过在数字前补充0的手段,让个位数、十位数、百位数变成千位数。
这样就转化为了场景1,输出列表是有顺序的。
比如,8,9前加一个0,可以和十位数进行对比。
补0算法可以用shutil库:
import os
import shutil
from fullerenedatapraser.io.recursion import recursion_files
root_path = r'I:\cages\one_to_full'
for item in recursion_files(root_path, format='xyz', ignore_mode=True):
item = str(item)
if item[-12] == '_':
new_name = item[:-11] + '0' + item[-11:]
shutil.move(item, f'{new_name}')