Directory Listing को Creation Date द्वारा Sort करना
Python में Directory Listing को Creation Date द्वारा Sort करने के लिए, आप os.listdir() को Call करके Filenames की List प्राप्त कर सकते हैं। फिर प्रत्येक के लिए os.stat() Call करके Creation Time प्राप्त करें और अंत में Creation Time के विरुद्ध Sort करें।
उदाहरण
import os
import time
import sys
from stat import S_ISREG, ST_CTIME, ST_MODE
dir_path = '.'
# Directory में सभी Entries प्राप्त करें
entries = (os.path.join(dir_path, file_name) for file_name in os.listdir(dir_path))
# उनके Stats प्राप्त करें
entries = ((os.stat(path), path) for path in entries)
# केवल Regular Files छोड़ें, Creation Date Insert करें
entries = ((stat[ST_CTIME], path)
for stat, path in entries if S_ISREG(stat[ST_MODE]))
# Sort करें
for ctime, path in sorted(entries):
print(time.ctime(ctime), path)
Output
Mon Oct 23 18:01:25 2017 sorted_ls.py
सरल Version (Modern Python):
import os
from pathlib import Path
files = [f for f in Path('.').iterdir() if f.is_file()]
files_sorted = sorted(files, key=lambda f: f.stat().st_ctime)
for f in files_sorted:
print(f.stat().st_ctime, f.name)
Human-Readable Dates के साथ:
import os
from pathlib import Path
from datetime import datetime
files = [f for f in Path('.').iterdir() if f.is_file()]
files_sorted = sorted(files, key=lambda f: f.stat().st_ctime)
for f in files_sorted:
dt = datetime.fromtimestamp(f.stat().st_ctime)
print(f"{dt.strftime('%Y-%m-%d %H:%M:%S')} {f.name}")
नोट: Unix Systems पर st_ctime Metadata Change Time होता है, Creation Time नहीं। True Creation Time के लिए (Linux 4.11+), statx System Call की आवश्यकता होती है।