別のディレクトリ内に作成された最新のディレクトリを見つける方法を探しています。私が持っている唯一の方法はos.listdir()
、内部のすべてのファイルとディレクトリを表示することです。ディレクトリのみを一覧表示するにはどうすればよいですか? また、ディレクトリの属性にアクセスして、作成された最新のものを見つけるにはどうすればよいですか? ありがとう
4 に答える
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]
構文とスライスを使用してアクセスできます
最新のディレクトリの名前を返すために私が書いた小さな関数は次のとおりです。
#!/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')
次のPythonコードで問題を解決できます。
import os
import glob
for dir in glob.glob('*'):
if os.path.isdir(dir):
print dir,":",os.path.getctime(dir)
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)