2016-06-13 16 views
4

pythonでディレクトリ内のファイルをソートする簡単な方法はありますか?Pythonを使用して特定の順序でファイル名をソートする方法

for filename in glob(path):  
    with open(filename,'rb') as thefile: 
     #Do stuff to each file 
:私は心の中で私が欲しいもの

file_01_001 
file_01_005 
... 
file_02_002 
file_02_006 
... 
file_03_003 
file_03_007 
... 
file_04_004 
file_04_008 

として発注してきたファイルは、私は現在、次のようにディレクトリのglobを使用してそれらを開封しております

file_01_001 
file_02_002 
file_03_003 
file_04_004 
file_01_005 
file_02_006 
... 

のようなものです

それで、プログラムが目的のタスクを実行している間に、ファイルの順序のために一度に複数のファイルを実行すると、不正なデータを与えてしまいます。何か案は?

+0

ファイルには順序がありませんねえ、置かれる。名前、ファイルサイズ、追加された日付など、特定の値でファイルエクスプローラで並べ替えられます。したがって、ファイルに対して「何か」を実行したり、ディレクトリ内で並べ替えることはできません。 –

答えて

7

前述のとおり、ディレクトリ内のファイルは本質的に特定の方法でソートされていません。したがって、私たちは通常、1)ファイル名を取得します。2)ファイル名を目的のプロパティでソートします。3)ソート順でファイルを処理します。

ディレクトリ内のファイル名は、次のように取得できます。ディレクトリ、ファイル名をソートする

import os 

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

し、「〜/ホーム」であると仮定します

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'] 

で読み込み、ソートでそれらを処理するには、次のよう

#grab last 4 characters of the file name: 
def last_4chars(x): 
    return(x[-4:]) 

sorted(file_list, key = last_4chars) 

だからそれが見えます注文する:

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 
関連する問題