1

I am trying to read csv files in directories and its subdirectories so I can get the data from them so I can better organize it in an excel file. I am able to do it but I cannot get it to sort based on the folder I labeled for distance. (2m, 3m, 5m, 10, and 15m)

My Code:

import glob
import os
for cow in sorted(glob.glob(r'C:\Users\v-denhe\Documents\Custom_Target\**\*cypx.csv', recursive=True)):
    print(cow)

Actual Results:

C:\Users\v-denhe\Documents\Custom_Target\PreDV-10\10m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-10\15m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-10\2m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-10\3m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-10\5m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-11\10m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-11\15m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-11\2m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-11\3m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-11\5m\Results\SFR_cypx.csv

Expected Results:

C:\Users\v-denhe\Documents\Custom_Target\PreDV-10\2m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-10\3m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-10\5m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-10\10m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-10\15m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-11\2m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-11\3m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-11\5m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-11\10m\Results\SFR_cypx.csv
C:\Users\v-denhe\Documents\Custom_Target\PreDV-11\15m\Results\SFR_cypx.csv
Nycbros
  • 95
  • 8
  • 1
    [Does Python have a built in function for string natural sort?](https://stackoverflow.com/questions/4836710/does-python-have-a-built-in-function-for-string-natural-sort) – furas Aug 05 '19 at 23:54

1 Answers1

1

Use key, split on directory separator, pick the 6th element, strip "m" from it and set reverse sorting:

import glob
import os
for cow in sorted(glob.glob(r'C:\Users\v-denhe\Documents\Custom_Target\**\*cypx.csv', recursive=True), key=lambda x: x.split("\\")[6].strip("m"), reverse=True)):
    print(cow)
ipaleka
  • 3,745
  • 2
  • 13
  • 33