Python Forum
Filer and sort files by modification time in a directory - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Filer and sort files by modification time in a directory (/thread-42062.html)



Filer and sort files by modification time in a directory - tester_V - May-02-2024

Greetings!
I need to filter files by file names, sort by the last modification time and process them.
I got this code but it does not work.
import glob, os
pt = "C:/PS_Power-Shell_scripts/Files/File.*"
all_files = glob.glob(pt)
all_files.sort(key=lambda x: x[1], reverse=True)
for file in all_files :
    print(f" -- {file}")


Could you help me with this?
Thank you.


RE: Filer and sort files by modification time in a directory - Gribouillis - May-02-2024

Try
all_files.sort(key=lambda x: os.path.getmtime(x), reverse=True)
(May-02-2024, 03:57 AM)tester_V Wrote: I got this code but it does not work
This always amazes me. How do you guys get this code from? Does it fall from the sky? Don't you understand what the code does?


RE: Filer and sort files by modification time in a directory - tester_V - May-02-2024

I would not lie, I Googled it and I do not understand it. I actually come up with a "readable' one and it works.
I'm not sure if it is a good code or not. Sorry about that!
lst_ogs = []

for item in Path(host_path).iterdir() :
	if item.is_file() :
		fname = Path(item).name
		#print(f" .. {fname}")
		if fname.startswith("some_log") : 
			lst_ogs.append(item)            

lst_ogs.sort(key=os.path.getmtime,reverse=True) 
Thank you!


RE: Filer and sort files by modification time in a directory - Gribouillis - May-02-2024

(May-02-2024, 06:02 AM)tester_V Wrote: I Googled it and I do not understand it
I think it is OK to google but take the time to understand what the code does and why it does not work when it does not work. This way you can improve your Python skills.


RE: Filer and sort files by modification time in a directory - Pedroski55 - May-02-2024

Maybe this will help with the understanding part?

from pathlib import Path
import os

mydir = Path('/home/pedro/tmp/')
# get all files
filelist = [filename for filename in mydir.iterdir() if filename.is_file()]
# copy filelist
old_list = filelist.copy()
# sort filelist according to os.path.getmtime
filelist.sort(key=os.path.getmtime, reverse=True)
# compare the 2 lists
for f in range(len(filelist)):
    print(filelist[f])
    print(old_list[f])
To get the actual date of modification:

from datetime import datetime

def modification_date(filename):
    secs = os.path.getmtime(filename) # like: 1634870901.972196
    dt = datetime.fromtimestamp(secs)
    date = dt.strftime("%A %B %Y %H:%M:%S.%f")
    print(f'file is: {f}')
    print(f'last modified time in epoch seconds: {secs}')
    print(f'date of last modification was: {date}\n')

mydir = Path('/home/pedro/tmp/')
file_gen = (filename for filename in mydir.iterdir() if filename.is_file())
for f in file_gen:
    modification_date(f)



RE: Filer and sort files by modification time in a directory - tester_V - May-02-2024

Thank you all for sharing the codes and coaching! You guys(girls?) are great!