use*_*212 26 python python-3.x pathlib
如何使用pathlib以递归方式迭代给定目录的所有子目录?
p = Path('docs')
for child in p.iterdir(): child
Run Code Online (Sandbox Code Playgroud)
似乎只是迭代给定目录的直接子节点.
我知道这是可能的os.walk()或glob,但我想使用pathlib因为我喜欢使用路径对象.
pyl*_*ang 29
使用Path.rglob(替代的主导**中Path().glob("**/*")):
path = Path("docs")
for p in path.rglob("*"):
print(p.name)
Run Code Online (Sandbox Code Playgroud)
Jac*_*din 22
您可以使用对象的glob方法Path:
p = Path('docs')
for i in p.glob('**/*'):
print(i.name)
Run Code Online (Sandbox Code Playgroud)
win*_*and 12
从 Python 3.12 开始使用pathlib.Path.walk()
import pathlib
path = pathlib.Path(r"E:\folder")
for root, dirs, files in path.walk():
print("Root: ")
print(root)
print("Dirs: ")
print(dirs)
print("Files: ")
print(files)
print("")
Run Code Online (Sandbox Code Playgroud)
dze*_*lee 10
使用列表理解:
(1) [f.name for f in p.glob("**/*")] # or
(2) [f.name for f in p.rglob("*")]
Run Code Online (Sandbox Code Playgroud)
如果您只想分别定位文件或目录,则可以将if f.is_file()或添加到 (1) 或 (2)。if f.is_dir()或者"*"用某种模式替换,例如"*.txt"如果您只想定位.txt文件。
请参阅此快速指南。
pathlib有glob我们可以提供模式作为参数的方法。
例如:Path('abc').glob('**/*.txt')- 它将abc递归查找当前文件夹和所有其他子目录以定位所有txt文件。
小智 5
要仅查找文件夹,正确的 glob 字符串是:
'**/'
Run Code Online (Sandbox Code Playgroud)
因此,要查找路径中所有文件夹的所有路径,请执行以下操作:
p = Path('docs')
for child in p.glob('**/'):
print(child)
Run Code Online (Sandbox Code Playgroud)
如果您只想要没有路径的文件夹名称,则像这样打印文件夹的名称:
p = Path('docs')
for child in p.glob('**/'):
print(child.name)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6672 次 |
| 最近记录: |