os.listdir
Graham Fawcett
fawcett at teksavvy.com
Mon Sep 8 19:47:28 EDT 2003
Hari wrote:
>Hi,
>
>I have question regarding os.listdir()
>
>
>I wanted to know if this is a reliable way to check for files added to
>a directory??
>
>files = os.lisdir(path)
>
>currentlen = len(files)
>
>// directory modified
>
>files = os.listdor(path)
>
>newlen = len(files)
>
>then the files in the range (currentlen -1) to (newlen -1) are all the
>files added to the directory.
>
>What I wanted to know was, is it guaranteed that between 2 calls
>os.listdir any files added to the directory are appended and the
>earlier order is maintained?
>
>
Unless the documentation for os.listdir specifies such behaviour
explicitly, you should assume the answer is /no/. There are many
Pythons, running on many platforms; don't assume that they all share
identical unspecified behaviour.
There's no need for such sequence guarantees, though. It's probably not
the most efficient but here's a way to do it:
import os
import time
somedir = '/tmp'
snapshot1 = os.listdir(somedir)
time.sleep(...)
snapshot2 = os.listdir(somedir)
newfiles = [f for f in snapshot2 if not f in snapshot1]
Pretty efficient, really: that's an O(n) comparison if I remember my
Python internals correctly. Which I don't, so don't trust my word for
it. ;-)
>thanks,
>
>Hari
>
>
-- Graham
More information about the Python-list
mailing list