gpt4 book ai didi

python - 相当于 python 3 中的 find coreutil 命令递归返回目录结构中的所有文件和文件夹?

转载 作者:太空狗 更新时间:2023-10-30 02:30:22 24 4
gpt4 key购买 nike

在 python (3) 中递归返回目录结构中的所有文件和文件夹的最佳替代方法是什么?

我想要类似的东西:

find ~/x/y/ > ~/matches.txt

我重写了来自 another question 的提示得到了一些有用的东西,但它有一些问题:

matches = glob.glob("/Users/x/y/*/*)

如果“~/x/y/”中有任何可能发生的文件,这将不起作用我也不确定这是一种健壮或惯用的方式来做到这一点。

那么在 Python 中复制上述查找命令的最佳方法是什么?

最佳答案

您可以使用 os.walk :

获取目录、文件名列表:

import os

matches = []
for dirpath, dirnames, filenames in os.walk(os.path.expanduser('~/x/y')):
matches.extend(os.path.join(dirpath, x) for x in dirnames + filenames)

将文件列表写入文本文件:

import os

with open(os.path.expanduser('~/matches.txt'), 'w') as f:
for dirpath, dirnames, filenames in os.walk(os.path.expanduser('~/x/y')):
for x in dirnames + filenames:
f.write('{}\n'.format(os.path.join(dirpath, x)))

os.path.expanduser用于将~替换为主目录路径。


替代使用 pathlib.Path.rglob从 Python 3.4 开始可用:

import os
import pathlib

matches = list(map(str, pathlib.Path(os.path.expanduser('~/x/y')).rglob('*')))

import os
import pathlib

with open(os.path.expanduser('~/matches.txt'), 'w') as f:
for path in pathlib.Path(os.path.expanduser('~/x/y')).rglob('*'):
f.write('{}\n'.format(path))

关于python - 相当于 python 3 中的 find coreutil 命令递归返回目录结构中的所有文件和文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27459579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com