buh*_*htz 5 python directory glob python-3.x pathlib
我想用来在当前工作目录中pathlib.glob()
查找具有特定名称模式 ( ) 的目录。*data
我不想明确检查 via.isdir()
或其他东西。
这是相关列表,其中三个文件夹作为预期结果,一个文件具有相同的模式,但它应该是结果的一部分。
ls -ld *data
drwxr-xr-x 2 user user 4,0K 9. Sep 10:22 2021-02-11_68923_data/
drwxr-xr-x 2 user user 4,0K 9. Sep 10:22 2021-04-03_38923_data/
drwxr-xr-x 2 user user 4,0K 9. Sep 10:22 2022-01-03_38923_data/
-rw-r--r-- 1 user user 0 9. Sep 10:24 2011-12-43_3423_data
Run Code Online (Sandbox Code Playgroud)
[
'2021-02-11_68923_data/',
'2021-04-03_38923_data/',
'2022-01-03_38923_data/'
]
Run Code Online (Sandbox Code Playgroud)
from pathlib import Path
cwd = Path.cwd()
result = cwd.glob('*_data/')
result = list(result)
Run Code Online (Sandbox Code Playgroud)
这给了我 3 个文件夹和文件。
还尝试了变体cwd.glob('**/*_data/')
。
在模式中当然应该尊重尾随路径分隔符pathlib.glob
。这是所有平台上 shell 的预期行为,也是glob 模块的工作方式:
如果模式后跟 os.sep 或 os.altsep,则文件将不匹配。
但是, pathlib 中有一个错误,已在bpo-22276中修复,并合并到Python-3.11.0rc1中(请参阅新增内容: pathlib)。
同时,作为解决方法,您可以使用 glob 模块来获得您想要的行为:
$ ls -ld *data
drwxr-xr-x 2 user user 4096 Sep 9 22:45 2022-01-03_38923_data
drwxr-xr-x 2 user user 4096 Sep 9 22:44 2021-04-03_38923_data
drwxr-xr-x 2 user user 4096 Sep 9 22:44 2021-02-11_68923_data
-rw-r--r-- 1 user user 0 Sep 9 22:45 2011-12-43_3423_data
Run Code Online (Sandbox Code Playgroud)
>>> import glob
>>> res = glob.glob('*_data')
>>> print('\n'.join(res))
2022-01-03_38923_data
2011-12-43_3423_data
2021-02-11_68923_data
2021-04-03_38923_data
Run Code Online (Sandbox Code Playgroud)
>>> res = glob.glob('*_data/')
>>> print('\n'.join(res))
2022-01-03_38923_data/
2021-02-11_68923_data/
2021-04-03_38923_data/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4264 次 |
最近记录: |