In win32 and linux platform, os modules has diffreent output order, is it a bug?
clp2 at rebertia.com
Fri Mar 1 09:55:29 CET 2013
On Fri, Mar 1, 2013 at 12:43 AM, Honghe Wu <leopardsaga at 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.
More information about the Python-list