将多个文件夹的名称存储在变量列表中
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')
我有 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')