0

たとえば、ディレクトリにxmlファイルのリストがあります。

file1.xml
file2.xml 
file3.xml
file4.xml
file5.xml
file10.xml
file11.xml
file12.xml
file22.xml
file23.xml
file24.xml
file31.xml
file32.xml
file33.xml

os.listdir(path) を使用してファイル名を出力すると、出力は次のようになります。

file1.xml
file10.xml 
file11.xml
file12.xml
file2.xml
file22.xml
file23.xml
file24.xml
file3.xml
file31.xml
file32.xml
file33.xml
file4.xml
file5.xml

期待される出力

file1.xml
file2.xml 
file3.xml
file4.xml
file5.xml
file10.xml
file11.xml
file12.xml
file22.xml
file23.xml
file24.xml
file31.xml
file32.xml
file33.xml

この問題の解決策があるかどうか教えてください。前もって感謝します!!

4

1 に答える 1

0

os.listdirのドキュメントに従って(強調鉱山):

os.listdir(パス)

パスで指定されたディレクトリ内のエントリの名前を含むリストを返します。リストは任意の順序です。特別なエントリ「.」は含まれません。および「..」は、ディレクトリに存在する場合でも。

あなたの例を考えると、おそらく最も簡単な方法は、名前から数字を抽出してリストをソートし、それらでソートすることです。

import os, re

filenames = os.listdir('/path/to/your/files')
filenames.sort(key=lambda L: map(int, re.findall('\d+', L)))
于 2013-05-11T09:25:27.707 に答える