Find Files in a Folder Between 2 Dates

  • Thread starter Gregory Plantaine
  • Start date
G

Gregory Plantaine

Is there a way to find all the files in a folder, between 2 dates?

For example:

Firstdate = 200801010000
Seconddate = 200801020000

Find all the files in C:\Folder that are between Firstdate and
SecondDate.
 
T

Tim Chase

Is there a way to find all the files in a folder, between 2 dates?
For example:

Firstdate = 200801010000
Seconddate = 200801020000

Find all the files in C:\Folder that are between Firstdate and
SecondDate.

This should do it:

import time
import os
firstdate = "200801010000"
seconddate = "200801020000"
def get_timestamp(s):
return time.mktime(time.strptime(s, "%Y%m%d%H%M"))
start = get_timestamp(firstdate)
end = get_timestamp(seconddate)
location = '/path/to/wherever/'
files = [fname
for fname in os.listdir(location)
if start <=
os.stat(os.path.join(location, fname)).st_mtime
<= end
]
print files

The magic is the the os.stat(f).st_mtime to determine when the
associated timestamp, the os.listdir() to get the available files
in a directory, and the list-comprehension to filter to only the
ones you want.

-tkc
 
G

Gregory Plantaine

That worked perfectly!

Thanks Tim!

Since we can print the files, does that mean the list of files is in a
tuple, or something? Would there be a way to further split up the
file names?

For example, now that the files are processed into the list, we want
to look through that list to find different filetypes.

files

C:\Folder\File_200812051439.111
C:\Folder\File_200812051539.222

Can we split up .111 files?

Actually, where would I look something like this up?
 
J

John Machin

That worked perfectly!

Thanks Tim!

Since we can print the files, does that mean the list of files is in a
tuple, or something?  Would there be a way to further split up the
file names?

For example, now that the files are processed into the list, we want
to look through that list to find different filetypes.

files

C:\Folder\File_200812051439.111
C:\Folder\File_200812051539.222

*DANGER* It looks like you are interested in the timestamps that are
embedded in the names of the files. Tim's code assumes [reasonably
given that your problem description was ambiguous and had no examples
of good and bad results] that you are interested in the last
modification time of the file. You may say "same thing". Yes, same
thing, until somebody sucks a file into a text editor, messes with it,
and saves it again. No, Murphy's Law has not been repealed.
Can we split up .111 files?

Actually, where would I look something like this up?

In the Library Reference Manual ... there are all sorts of goodies in
the os and os.path modules e.g. like those used by Tim; make sure you
read the docs on the methods Tim used so that you understand what's
happening.

HTH,
John
 
G

Gregory Plantaine

That worked perfectly!
Thanks Tim!
Since we can print the files, does that mean the list of files is in a
tuple, or something?  Would there be a way to further split up the
file names?
For example, now that the files are processed into the list, we want
to look through that list to find different filetypes.

C:\Folder\File_200812051439.111
C:\Folder\File_200812051539.222

*DANGER* It looks like you are interested in the timestamps that are
embedded in the names of the files. Tim's code assumes [reasonably
given that your problem description was ambiguous and had no examples
of good and bad results] that you are interested in the last
modification time of the file. You may say "same thing". Yes, same
thing, until somebody sucks a file into a text editor, messes with it,
and saves it again. No, Murphy's Law has not been repealed.


Can we split up .111 files?
Actually, where would I look something like this up?

In the Library Reference Manual ... there are all sorts of goodies in
the os and os.path modules e.g. like those used by Tim; make sure you
read the docs on the methods Tim used so that you understand what's
happening.

HTH,
John

Thanks for the advice John!

I was going though the Manual, but I'm having some trouble figuring
out how to iterate through each line.

So from the same example, we've already created a list called "lists".
Now how do I iterate through each line?

For eachline in lists
Find all .111 files.
 
G

Gregory Plantaine

*DANGER* It looks like you are interested in the timestamps that are
embedded in the names of the files. Tim's code assumes [reasonably
given that your problem description was ambiguous and had no examples
of good and bad results] that you are interested in the last
modification time of the file. You may say "same thing". Yes, same
thing, until somebody sucks a file into a text editor, messes with it,
and saves it again. No, Murphy's Law has not been repealed.
Can we split up .111 files?
Actually, where would I look something like this up?
In the Library Reference Manual ... there are all sorts of goodies in
the os and os.path modules e.g. like those used by Tim; make sure you
read the docs on the methods Tim used so that you understand what's
happening.
HTH,
John

Thanks for the advice John!

I was going though the Manual, but I'm having some trouble figuring
out how to iterate through each line.

So from the same example, we've already created a list called "lists".
Now how do I iterate through each line?

For eachline in lists
    Find all .111 files.- Hide quoted text -

- Show quoted text -

Ok, I figured it out. Actually more simple than I thought:

for eachfile in files:
if eachfile.endswith(".111"):
print eachfile

Another somewhat related question, instead of defining the firstdate,
how would we do this?

firstdate = secondate - 7 days
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,432
Messages
2,571,680
Members
48,796
Latest member
Greg L.

Latest Threads

Top