3

別のディレクトリ内に作成された最新のディレクトリを見つける方法を探しています。私が持っている唯一の方法はos.listdir()、内部のすべてのファイルとディレクトリを表示することです。ディレクトリのみを一覧表示するにはどうすればよいですか? また、ディレクトリの属性にアクセスして、作成された最新のものを見つけるにはどうすればよいですか? ありがとう

4

4 に答える 4

9
import os
dirs = [d for d in os.listdir('.') if os.path.isdir(d)]
sorted(dirs, key=lambda x: os.path.getctime(x), reverse=True)[:1]

アップデート:

多分もう少し説明:

[d for d in os.listdir('.') if os.path.isdir(d)]

リスト内包表記です。詳細については、こちらをご覧ください。

コードは次と同じことを行います

dirs = []
for d in os.listdir('.'):
    if os.path.isdir(d):
        dirs.append(d)

するでしょうが、リスト内包表記の方が読みやすいと考えられています。

sorted()組み込み関数です。いくつかの例はこちら

私が示したコードは、逆に os.path.getctime(ELEMENT) によってディレクトリ内のすべての要素をソートします。結果は再びリストです。もちろん、[index]構文とスライスを使用してアクセスできます

于 2012-06-11T16:20:02.110 に答える
6

最新のディレクトリの名前を返すために私が書いた小さな関数は次のとおりです。

#!/usr/bin/env python

import os
import glob
import operator

def findNewestDir(directory):
    os.chdir(directory)
    dirs = {}
    for dir in glob.glob('*'):
        if os.path.isdir(dir):
            dirs[dir] = os.path.getctime(dir)

    lister = sorted(dirs.iteritems(), key=operator.itemgetter(1))
    return lister[-1][0]

print "The newest directory is", findNewestDir('/Users/YOURUSERNAME/Sites')
于 2012-06-11T16:25:17.210 に答える
5

次のPythonコードで問題を解決できます。

import os
import glob
for dir in glob.glob('*'):
  if os.path.isdir(dir):
    print dir,":",os.path.getctime(dir)
于 2012-06-11T16:08:56.187 に答える
0

os.walkディレクトリを取得する簡単な方法については、ドキュメントの例を確認してください。

root, dirs, files = os.walk('/your/path').next()

次にos.path.getctime、OS に応じて、作成時間または変更時間である可能性があるものを確認します。まだ慣れていない場合は、 も読んでくださいos.path.join

os.path. getctime (path) システムの ctime を返します。これは、一部のシステム (Unix など) では最後の変更時刻であり、他のシステム (Windows など) ではパスの作成時刻です。

max((os.path.getctime(os.path.join(root, f)), f) for f in dirs)
于 2012-06-11T16:31:22.113 に答える