16

ファイルをループするときにPythonがファイルをどのように整理するか知っている人はいますか? フォルダー内のいくつかのファイルを固定された順序で (できればファイル名に従って英数字で) ループする必要がありますが、Python はかなりランダムな順序でそれらをループするようです。これまでのところ、私はこのコードを使用しています:

filelist = glob.glob(os.path.join(path, 'FV/*.txt'))
for infile in filelist: 
  #do some fancy stuff
  print str(infile)

ファイル名は、私にはあまり明らかではない順序で出力されます。

そのループの特定の順序を事前定義する簡単な方法はありますか? ありがとう!

4

3 に答える 3

34

ドキュメントで見る限り、glob.glob()定義された順序はありません。これを考えると、確認する最も簡単な方法は、返されたリストを並べ替えることです。

filelist = glob.glob(os.path.join(path, 'FV/*.txt'))
for infile in sorted(filelist): 
  #do some fancy stuff
  print str(infile)

これは単に文字列としてソートされます。これにより、探していた単純な固定順序が得られます。特定の順序が必要な場合は、キーワード引数として取ります。これは、並べ替え順序を指定する関数ですsorted()key詳細については、ドキュメント (前にリンク) を参照してください。

于 2013-04-22T13:58:04.207 に答える
-3
import os
for root, dirs, files in os.walk(os.path.join(path, 'FV/'), topdown=True):
  print root
  print files.sort(reverse=True)

それは代替案です..(glob.glob()アイテムを注文するためのパラメータを取らないことを考慮してglob.glob()walk()..有用なパラメータを取り、反対票は不公平だと思いますが、誰もが自分の意見を聞く権利があります-. -)

于 2013-04-22T13:56:13.783 に答える