获取目录中所有文件名的列表及其原始文件夹顺序
Get list of all file names in a directory with its original in folder order
我想获取目录中所有文件名的列表,但文件的顺序对我很重要。 (如果重要的话,我正在使用 Google Colab)
P.S: I've accepted the first answer, but just in case know that when I
moved my files from google drive to my local PC and run the code, it
worked and printed those with the original order. I think there is
something with the Google Colab
假设我的文件在我的目录中按以下顺序排列:
file1.txt
file2.txt
file3.txt
...
filen.txt
P.S: These file names are just examples to be clear. In reality my
filenames don't have any pattern to be sorted, they are like
1651768933554-b6b4deb3-f245-4763-b38d-71a4b19ca948.wav
当我通过此代码获取文件名时:
import glob
for g in glob.glob(MyPath):
print(g)
我会得到这样的东西:
file24.txt
file5.txt
file61.txt
...
我想按照文件在文件夹中的顺序获取文件名。
我尽可能地进行了搜索,但没有找到任何 SO post 解决我的问题。感谢任何帮助。
P.S:我也试过from os import listdir
但是没用。
它们在文件夹中的存在方式并不是真正的问题。实际上,它们都位于内存中的某个位置,不一定以任何方式彼此相邻。 GUI 通常按字母顺序显示它们,但通常也有过滤器,您可以单击以按照您选择的任何方式对它们进行排序。
他们以这种方式打印的原因是因为它是按字母顺序排列的。按字母顺序 2
在 5
之前所以 24
在 5
.
之前
虽然我同意其他评论,但可以选择使用自然语言排序。这可以通过 natsort 包来完成。
>>> from natsort import natsorted
>>> files = ['file24.txt', 'file5.txt', 'file61.txt']
>>> sorted_files = natsorted(files)
>>> sorted_files
['file5.txt', 'file24.txt', 'file61.txt']
编辑:
抱歉,我之前没有在包裹中看到这个。更好地满足您的需求,请参阅 natsort
中的 os_sorted
。
>>> from natsort import os_sorted
>>> files = ['file24.txt', 'file5.txt', 'file61.txt']
>>> sorted_files = os_sorted(files)
>>> sorted_files
['file5.txt', 'file24.txt', 'file61.txt']
或者,本质上 os.listdir()
...
>>> sorted_directory = os_sorted(os.listdir(directory_path))
我想获取目录中所有文件名的列表,但文件的顺序对我很重要。 (如果重要的话,我正在使用 Google Colab)
P.S: I've accepted the first answer, but just in case know that when I moved my files from google drive to my local PC and run the code, it worked and printed those with the original order. I think there is something with the Google Colab
假设我的文件在我的目录中按以下顺序排列:
file1.txt
file2.txt
file3.txt
...
filen.txt
P.S: These file names are just examples to be clear. In reality my filenames don't have any pattern to be sorted, they are like
1651768933554-b6b4deb3-f245-4763-b38d-71a4b19ca948.wav
当我通过此代码获取文件名时:
import glob
for g in glob.glob(MyPath):
print(g)
我会得到这样的东西:
file24.txt
file5.txt
file61.txt
...
我想按照文件在文件夹中的顺序获取文件名。
我尽可能地进行了搜索,但没有找到任何 SO post 解决我的问题。感谢任何帮助。
P.S:我也试过from os import listdir
但是没用。
它们在文件夹中的存在方式并不是真正的问题。实际上,它们都位于内存中的某个位置,不一定以任何方式彼此相邻。 GUI 通常按字母顺序显示它们,但通常也有过滤器,您可以单击以按照您选择的任何方式对它们进行排序。
他们以这种方式打印的原因是因为它是按字母顺序排列的。按字母顺序 2
在 5
之前所以 24
在 5
.
虽然我同意其他评论,但可以选择使用自然语言排序。这可以通过 natsort 包来完成。
>>> from natsort import natsorted
>>> files = ['file24.txt', 'file5.txt', 'file61.txt']
>>> sorted_files = natsorted(files)
>>> sorted_files
['file5.txt', 'file24.txt', 'file61.txt']
编辑:
抱歉,我之前没有在包裹中看到这个。更好地满足您的需求,请参阅 natsort
中的 os_sorted
。
>>> from natsort import os_sorted
>>> files = ['file24.txt', 'file5.txt', 'file61.txt']
>>> sorted_files = os_sorted(files)
>>> sorted_files
['file5.txt', 'file24.txt', 'file61.txt']
或者,本质上 os.listdir()
...
>>> sorted_directory = os_sorted(os.listdir(directory_path))