我正在使用具有多个结构相似的文件夹的目录。我想在这个目录中多次找到一个文件夹。摆弄里面的文件。然后继续 os.walk() 直到再次找到该文件夹,重复该过程。
例子:
directory:
----X3
----Tim
----Jan
----Eric
----X4
----Tim
----Jan
----Eric
我想找到“Tim”文件夹的两个实例,并在其中执行类似的操作。
作为旁注,如果我也可以获取其上方文件夹的名称,那也将非常有帮助。因此“Tim”文件夹中的文件可以命名为“X3 - Tim - ThingIWantToDo.file”和“X4 - Tim - ThingIWantToDo.file”
我知道这os.walk()
可以完整地遍历一个目录。它可以很容易地找到特定的文件。查找特定文件夹显然要困难得多。
for folderName, subfolders, filenames in os.walk('C:\\'):
print('The current folder is ' + folderName)
for subfolder in subfolders:
print('SUBFOLDER OF ' + folderName + ': ' + subfolder)
for filename in filenames:
print('FILE INSIDE ' + folderName + ': '+ filename)
这非常适合仅列出所有内容。但我想要的是,当folderName
路径包含我正在寻找的文件名时,我的thingIWantToDO()
代码将执行,然后它会继续。
像这样的东西
for folderName, subfolders, filenames in os.walk('C:\\'):
if folderName contains 'Tim':
andFolderContainingTim = folderName[:-10] #or some number.
thingIWantToDO(folderName, andFolderContainingTim)
我想从这个 os.walk(), * 中保存两件事,首先是特定搜索文件夹上方的文件夹。(X3 到 Tim) * 其次,获取文件夹路径,以便我的其余代码可以继续工作。
任何帮助深表感谢。
你可以使用pathlib
:
mkdir A A/1 A/2 A/3 B B/1 B/3 B/4
.
├── A
│ ├── 1
│ ├── 2
│ └── 3
└── B
├── 1
├── 3
└── 4
from pathlib import Path
def find_all(name):
return list(p for p in Path().glob("**/"+name) if p.is_dir() )
find_all("1")
>>>[PosixPath('A/1'), PosixPath('B/1')]
请注意,返回的列表是由Path
实例,但你可以只敷p
在str(p)
先手的名字。
从这些Path
实例中很容易获得父目录:
dirs = find_all("1")
parent_directories = [p.parent for p in dirs]
>>> [PosixPath('A'), PosixPath('B')]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句