Я перебираю файлы в каталоге, используя Path (). Glob (), и он не перебирает в правильном естественном порядке. Например, это повторяется так:
[WindowsPath('C:/Users/HP/Desktop/P1/dataP1/SAMPLED_NORMALIZED/P1_Cor.csv'),
WindowsPath('C:/Users/HP/Desktop/P10/dataP10/SAMPLED_NORMALIZED/P10_Cor.csv'),
WindowsPath('C:/Users/HP/Desktop/P11/dataP11/SAMPLED_NORMALIZED/P11_Cor.csv'),
WindowsPath('C:/Users/HP/Desktop/P12/dataP12/SAMPLED_NORMALIZED/P12_Cor.csv'),
# ...and so on from P1 to P30
Когда я хочу, чтобы оно повторялось так: P1, P2, P3 и т. д.
Я попытался использовать приведенный ниже код, но это дает мне ошибка:
from pathlib import Path
file_path = r'C:/Users/HP/Desktop'
files = Path(file_path).glob(file)
sorted(files, key=lambda name: int(name[10:]))
, где 10 - это просто тривиальное число, когда я пытаюсь использовать код.
Ошибка:
TypeError: 'WindowsPath' object is not subscriptable
В конечном итоге, я хочу чтобы перебрать файлы и сделать что-то с каждым файлом:
from pathlib import Path
for i, fl in enumerate(Path(file_path).glob(file)):
# do something
Я даже попробовал библиотеку natsort
, но она не упорядочивает файлы правильно в итерации. Я пробовал:
from natsort import natsort_keygen, ns
natsort_key1 = natsort_keygen(key=lambda y: y.lower())
from natsort import natsort_keygen, ns
natsort_key2 = natsort_keygen(alg=ns.IGNORECASE)
Два приведенных выше кода по-прежнему дают мне P1, P10, P11 и т. Д.
Любая помощь действительно будет оценена.