टुपल्स की सूची में फ़ाइलों और तिथियों को एकत्रित करें और तिथि तत्व द्वारा उस सूची को सॉर्ट करें। यहाँ उदाहरण कोड है, यह टिप्पणी यह समझने के लिए पर्याप्त होना चाहिए:
from stat import S_ISREG, ST_CTIME, ST_MODE
import os, sys, time, glob
search_dir = r"e:\test"
files = filter(os.path.isfile, glob.glob(search_dir + "\\*.bas"))
file_date_tuple_list = []
for x in files:
d = os.path.getmtime(x)
#tuple with file and date, add it in a list
file_date_tuple = (x,d)
file_date_tuple_list.append(file_date_tuple)
#sort the tuple list by the second element which is the date
file_date_tuple_list.sort(key=lambda x: x[1])
वैकल्पिक रूप से, आप एक सूची समझ का उपयोग कर सकते कोड अधिक कॉम्पैक्ट और स्वच्छ बनाने के लिए ...
file_date_tuple_list = [(x,os.path.getmtime(x)) for x in files]
file_date_tuple_list.sort(key=lambda x: x[1])
यह दो पंक्तियां पहले उदाहरण से सभी for
पाश को प्रतिस्थापित कर देगी।
अब अगर क्या आप सूची में चाहते हैं फ़ाइल नाम और फिर स्वरूपित तारीख ... जोड़ने के इस आयात के साथ एक स्ट्रिंग ...
from datetime import date
और इस सूची समझ के साथ एक और लाइन है कि संशोधन समय स्टाम्प लेता है और इसे एक स्ट्रिंग में स्वरूपित करता है।
file_date_string_list = ["%s %s"%(x[0],date.fromtimestamp(x[1])) \
for x in file_date_tuple_list]
sort
निष्पादन में वैकल्पिक पैरामीटर reverse
का उपयोग प्रकार के आदेश को पलटने के लिए:
file_date_tuple_list.sort(key=lambda x: x[1],reverse=True)
एक विशिष्ट datetime
from datetime import datetime
limit = datetime(2011,01,05,17,0,0) #5pm , Jun 5 2011
file_date_string_list = ["%s %s"%(x[0],date.fromtimestamp(x[1])) \
for x in file_date_tuple_list \
if datetime.fromtimestamp(x[1]) > limit ]
करने की तारीख को सीमित करने के लिए आप देख सकते हैं आप सूची समझ के अंदर if
स्थिति जोड़ सकते हैं, जो वास्तव में अच्छा है।
'key = lambda x: os.path.getmtime (x)' -> 'key = os.path.getmtime' –