os.walk iteratesはどのような順序で反復するのでしょうか?[重複しています]
2023-08-31 07:41:53
質問
で指定されたファイルやディレクトリの順序が気になります。
os.walk()
. もし私がこれらのディレクトリを持っているとしたら。
1
,
10
,
11
,
12
,
2
,
20
,
21
,
22
,
3
,
30
,
31
,
32
のように、出力リストの順番はどうなるのでしょうか?
数値でソートされていますか?
1 2 3 10 20 30 11 21 31 12 22 32
あるいは、ASCII 値でソートされ、以下のようになります。
ls
?
1 10 11 12 2 20 21 22 3 30 31 32
さらに、特定のソートを取得するにはどうしたらよいでしょうか?
どのように解決するのですか?
os.walk
使用方法
os.listdir
. 以下は
os.listdir
:
listdir(path) -> list_of_strings
ディレクトリ内のエントリの名前を含むリストを返します。
path: path of directory to list
リストは任意の順序で表示されます . このリストには特別な を含みません。
(私の強調)。
しかし、あなたは
sort
を使用して、希望する順序を確保することができます。
for root, dirs, files in os.walk(path):
for dirname in sorted(dirs):
print(dirname)
(ディレクトリ名はint型ではなく文字列であることに注意してください。
sorted(dirs)
はそれらを文字列としてソートします -- これは一旦は望ましいことです。
AlfeとCiro Santilliが指摘しているように、もしディレクトリを
再帰的
をソートされた順番で表示させたいのであれば
dirs
その場で
:
for root, dirs, files in os.walk(path):
dirs.sort()
for dirname in dirs:
print(os.path.join(root, dirname))
自分でテストすることができます。
import os
os.chdir('/tmp/tmp')
for dirname in '1 10 11 12 2 20 21 22 3 30 31 32'.split():
try:
os.makedirs(dirname)
except OSError: pass
for root, dirs, files in os.walk('.'):
for dirname in sorted(dirs):
print(dirname)
プリント
1
10
11
12
2
20
21
22
3
30
31
32
数字順に並べたい場合は、次のようにします。
for dirname in sorted(dirs, key=int):
英数字の文字列を並べ替えるには ナチュラルソート .
関連
-
[解決済み] 山積みされた靴下を効率よく組み合わせるには?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] バイトを文字列に変換する
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] os.listdir() による非英数字のリストオーダー
-
[解決済み] 数字を含む文字列を正しくソートするには?重複
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?