Thanks! Cause I need sorted returnd list, and the arbitrary list makes the other procedure go wrong. Maybe the I/O speed is more important in other cases. On Mar 1, 2013 4:55 PM, "Chris Rebert" <c...@rebertia.com> wrote:
> On Fri, Mar 1, 2013 at 12:43 AM, Honghe Wu <leopards...@gmail.com> wrote: > > env: python 2.7.3 > > > > 6 test files' name in a directory as below: > > 12ab Abc Eab a1bc acd bc > > > > the following is test code: > > for root, dirs, files in os.walk(os.getcwd()): > > print files > > > > the output in win32 platform is: > > ['12ab', 'a1bc', 'Abc', 'acd', 'bc', 'Eab'] > > > > but in linux is: > > ['Eab', 'acd', 'a1bc', '12ab', 'bc', 'Abc' ] > > > > they are so different. a bug? > > Nope. When os.walk() fetches a listing of the contents of a directory, > it internally uses os.listdir() (or a moral equivalent thereof). The > docs for os.listdir() state that "The [returned] list is in arbitrary > order.". The order is dependent on the OS and filesystem, and likely > also more obscure factors (e.g. the order in which the files were > created). The lack of any required ordering allows for improved I/O > performance in many/most cases. > > Cheers, > Chris >
-- http://mail.python.org/mailman/listinfo/python-list