Python os.walk和以数字开头的文件名排序
我试图循环浏览我拥有的文件,并希望将每两个文件放在一对中,特别是后面的每两个文件实际上是相关的 我在我的目录中对文件进行了排序,并使用以下方法在目录中循环并读取文件对:Python os.walk和以数字开头的文件名排序,python,for-loop,operating-system,Python,For Loop,Operating System,我试图循环浏览我拥有的文件,并希望将每两个文件放在一对中,特别是后面的每两个文件实际上是相关的 我在我的目录中对文件进行了排序,并使用以下方法在目录中循环并读取文件对: for root, dirs, files in os.walk(TRAIN_DIR): for file1, file2 in itertools.izip_longest(files[::2], files[1::2]): 但是,我以不同的顺序接收file1和file2,而不是像目录中那样紧随其后的两个文件
for root, dirs, files in os.walk(TRAIN_DIR):
for file1, file2 in itertools.izip_longest(files[::2], files[1::2]):
但是,我以不同的顺序接收file1和file2,而不是像目录中那样紧随其后的两个文件。那么os.walk是否返回未排序的文件?我应该怎么做才能按排序的顺序浏览文件
谢谢
编辑1
这就是我如何运行文件.sort()
:
返回文件的顺序取决于基础文件系统。如果需要按排序顺序迭代文件名,最好自己进行:先对文件进行排序,然后进行迭代
返回文件的顺序取决于基础文件系统。如果需要按排序顺序迭代文件名,最好自己进行:先对文件进行排序,然后进行迭代
操作系统不保证返回按百分比排序的目录项。此外,“从数字开始”是什么意思?因为如果您有1_xx、2_yy、10_zz,如果您只使用字典排序,10_zz将插入其间。另请参阅操作系统不保证返回按算术排序的目录条目。此外,“从数字开始”是什么意思?因为如果你有1_-xx,2_-yy,10_-zz,10_-zz将被插入,如果你只是使用字典排序的话。另请参阅,谢谢你的回答。我的文件是这样开头的:0m3r2r12-。。。。。。。在这种情况下,“键”应该是什么?@简单,这是一种奇怪的格式。按照您的要求应该如何排序?在目录中,我让系统自然地对它们进行排序。例如,0a将出现在0m之前。有意义吗?@那么,从词典学的角度来说?你需要说明两位数的数字吗?如果是,则可以查看
natsort
模块。否则,仅使用file.sort()
进行字典排序就足够了。@Simplicity您是否检查了文件
是否正在排序?如果没有,您可能想用输入文件名打开另一个问题,询问如何根据需要对它们进行排序。请注意,这仅对程序中的文件
列表进行排序,而不是对文件系统中的文件进行排序…谢谢您的回答。我的文件是这样开头的:0m3r2r12-。。。。。。。在这种情况下,“键”应该是什么?@简单,这是一种奇怪的格式。按照您的要求应该如何排序?在目录中,我让系统自然地对它们进行排序。例如,0a将出现在0m之前。有意义吗?@那么,从词典学的角度来说?你需要说明两位数的数字吗?如果是,则可以查看natsort
模块。否则,仅使用file.sort()
进行字典排序就足够了。@Simplicity您是否检查了文件
是否正在排序?如果没有,您可能想用输入文件名打开另一个问题,询问如何根据需要对它们进行排序。请注意,这仅对程序中的文件
列表进行排序,而不是对文件系统中的文件进行排序。。。
for root, dirs, files in os.walk(TRAIN_DIR):
files.sort()
for file1, file2 in itertools.izip_longest(files[::2], files[1::2]):
for root, dirs, files in os.walk(TRAIN_DIR):
files.sort(key=...) # your predicate
...