将多个文件夹的名称存储在变量列表中

Storing the name of several folders in a variable list

我有 47 个文件夹(100、00、01、02、...、43、44、45)。我想将这些文件夹的名称存储在一个列表中,以便我可以用它构建一个 pandas 数据框。到目前为止,我有这个代码:

import os
import glob
path = '/content/drive/MyDrive/data/classes/'
ListOfClasses = []
for file in glob.glob (path + '/*'):
    ListOfClasses.append(file)
ListOfClasses

然而,文件夹的名称是这样的(它们也是杂乱无章的):

['/content/drive/MyDrive/data/classes/42',
 '/content/drive/MyDrive/data/classes/43',
 '/content/drive/MyDrive/data/classes/36',
 '/content/drive/MyDrive/data/classes/45',
 ...,
 '/content/drive/MyDrive/data/classes/00',
 '/content/drive/MyDrive/data/classes/02',
 '/content/drive/MyDrive/data/classes/04']

如何把以前的方法改成这样:

['00',
 '01',
 '02',
 '03',
 ...,
 '44',
 '45',
 '100']

您可以拆分 / 上的字符串。 rsplit('/', 1) 将在右起第一个 / 处拆分,rsplit('/', 1)[1] 将为您提供文件夹名称:

ListOfClasses = ['/content/drive/MyDrive/data/classes/42','/content/drive/MyDrive/data/classes/43','/content/drive/MyDrive/data/classes/36','/content/drive/MyDrive/data/classes/45']
[i.rsplit('/', 1)[1] for i in ListOfClasses]

结果:

['42', '43', '36', '45']

我不使用 glob 模块,而是使用 pathlib 模块。 pathlib.Path.glob 生成 pathlib.Path 个对象的集合,而不是字符串。由于它们是路径对象,您可以 select 只有每个路径的 stem 来剔除前面的所有内容。然后,您可以对词干字符串进行排序,就好像它们是整数一样:

from pathlib import Path

path = "/content/drive/MyDrive/data/classes/"

list_of_classes = sorted([p.stem for p in Path(path).glob("*")], key=int)

不需要 glob 或 pathlib。

import os

list_of_classes = os.listdir('/content/drive/MyDrive/data/classes')