给定以下文件结构
├── 0=ocfl_object_1.0
├── inventory.json
├── inventory.json.md5
├── v1
│ ├── content
│ │ ├── foo.xml
│ │ └── level1
│ │ └── level2
│ │ └── bar.txt
│ ├── inventory.json
│ └── inventory.json.md5
└── v2
├── content
│ └── duck.txt
├── inventory.json
└── inventory.json.md5
我想知道python的os.walk
函数是否有可能在Mac和Linux上以不同的顺序返回文件夹?两者都使用python3.5。你知道吗
Mac地址:
In [15]: for root,folders,files in os.walk('foo/bar'):
...: print(folders,files)
...:
['v1', 'v2'] ['inventory.json', '0=ocfl_object_1.0', 'inventory.json.md5']
['content'] ['inventory.json', 'inventory.json.md5']
['level1'] ['foo.xml']
['level2'] []
[] ['bar.txt']
['content'] ['inventory.json', 'inventory.json.md5']
[] ['duck.txt']
在Linux上:
In [54]: for root,folders,files in os.walk('foo/bar'):
...: print(folders,files)
...:
['v2', 'v1'] ['inventory.json.md5', 'inventory.json', '0=ocfl_object_1.0']
['content'] ['inventory.json.md5', 'inventory.json']
[] ['duck.txt']
['content'] ['inventory.json.md5', 'inventory.json']
['level1'] ['foo.xml']
['level2'] []
[] ['bar.txt']
在Mac中,似乎首先遇到了文件夹v1
,而在Linux中则是v2
。你知道为什么会这样吗?你知道吗
参见documentation on ^{} ,相关部分:
然后在^{} :
不管
listdir()
还是scandir()
,这两个函数都以任意顺序返回。你知道吗短期内是不可能的。你知道吗
话虽如此,您应该能够基于以下部分操作循环中的
dirnames
:因此,如果您
folders.sort()
,它应该根据您的sorted
顺序工作。我刚试过,效果不错。我还用粗体标出了关键部分,即folders
必须按顺序进行排序os.walk()
:相关问题 更多 >
编程相关推荐