我的文件夹结构类似于下面列出的内容。
Path
|
|
+----SubDir1
| |
| +---SubDir1A
| | |
| | |----- FileA.0001.ext
| | |----- ...
| | |----- ...
| | |----- FileA.1001.ext
| | |----- FileB.0001.ext
| | |----- ...
| | |----- ...
| | |----- FileB.1001.ext
| +---SubDir1B
|
| | |----- FileA.0001.ext
| | |----- ...
| | |----- ...
| | |----- FileA.1001.ext
| | |----- FileB.0001.ext
| | |----- ...
| | |----- ...
| | |----- FileB.1001.ext
+----SubDir2
| |
| |----- FileA.0001.ext
| |----- ...
| |----- ...
| |----- FileA.1001.ext
| |----- FileB.0001.ext
| |----- ...
| |----- ...
| |----- FileB.1001.ext
我希望能够为每个SubDir1和SubDir2列出第一个FileA和第一个FileB
我已经在网上看到并在for循环中看到了os.walk,类似于:
import os
rootDir = '.'
for dirName, subdirList, fileList in os.walk(rootDir):
print('Found directory: %s' % dirName)
for fname in fileList:
print('\t%s' % fname)
# Remove the first entry in the list of sub-directories
# if there are any sub-directories present
if len(subdirList) > 0:
del subdirList[0
但是,只有在子目录中直接存在文件时,这似乎才有效。我的问题是,有时在子目录(!!)
中有一个额外的子目录有没有人有任何想法如何解决这个问题?
答案 0 :(得分:0)
你的问题实际上是那两行,删除它们你就可以了:
if len(subdirList) > 0:
del subdirList[0]
解释:
他们所做的是他们使每个目录中的第一个子目录在os.walk
有时间走之前消失。因此,对于子目录,你会得到奇怪的行为就不足为奇了。
以下是使用以下树的行为说明:
test0/
├── test10
│ ├── test20
│ │ └── testA
│ ├── test21
│ │ └── testA
│ └── testA
├── test11
│ ├── test22
│ │ └── testA
│ ├── test23
│ │ └── testA
│ └── testA
└── testA
没有有问题的行:
Found directory: ./test/test0
testA
Found directory: ./test/test0/test10
testA
Found directory: ./test/test0/test10/test21
testA
Found directory: ./test/test0/test10/test20
testA
Found directory: ./test/test0/test11
testA
Found directory: ./test/test0/test11/test22
testA
Found directory: ./test/test0/test11/test23
testA
有问题的行:
Found directory: ./test/test0
testA
Found directory: ./test/test0/test11
testA
Found directory: ./test/test0/test11/test23
testA
因此,我们清楚地看到排在第一位的两个子文件夹test10
和test22
完全被忽略了,因为"坏线"。