How to sort file names in a particular order using python

后端 未结 2 1562
广开言路
广开言路 2021-02-08 07:52

Is there a simple way to sort files in a directory in python? The files I have in mind come in an ordering as

file_01_001
file_01_005
...
file_02_002
file_02_00         


        
2条回答
  •  盖世英雄少女心
    2021-02-08 08:06

    As mentioned, files in a directory are not inherently sorted in a particular way. Thus, we usually 1) grab the file names 2) sort the file names by desired property 3) process the files in the sorted order.

    You can get the file names in the directory as follows. Suppose the directory is "~/home" then

    import os
    
    file_list = os.listdir("~/home")
    

    To sort file names:

    #grab last 4 characters of the file name:
    def last_4chars(x):
        return(x[-4:])
    
    sorted(file_list, key = last_4chars)   
    

    So it looks as follows:

    In [4]: sorted(file_list, key = last_4chars)
    Out[4]:
    ['file_01_001',
     'file_02_002',
     'file_03_003',
     'file_04_004',
     'file_01_005',
     'file_02_006',
     'file_03_007',
     'file_04_008']
    

    To read in and process them in sorted order, do:

    file_list = os.listdir("~/home")
    
    for filename in sorted(file_list, key = last_4chars):    
        with open(filename,'rb') as thefile:
            #Do stuff to each file
    

提交回复
热议问题