gpt4 book ai didi

Python glob 模块无法进行多重选择?

转载 作者:行者123 更新时间:2023-12-01 00:11:43 25 4
gpt4 key购买 nike

在 Linux 中,我的文件夹如下所示:

src
├── app
│ ├── app.component.css
│ ├── app.component.html
│ ├── app.component.spec.ts
│ ├── app.component.ts
│ ├── app.module.ts
│ ├── app-routing.module.ts
│ ├── components
│ │ ├── catalog-main
│ │ │ ├── catalog-main.component.css
│ │ │ ├── catalog-main.component.html
│ │ │ ├── catalog-main.component.spec.ts
│ │ │ └── catalog-main.component.ts
│ │ ├── catalog-sidebar
│ │ │ ├── catalog-sidebar.component.css
│ │ │ ├── catalog-sidebar.component.html
│ │ │ ├── catalog-sidebar.component.spec.ts
│ │ │ └── catalog-sidebar.component.ts
│ │ └── top-bar
│ │ ├── top-bar.component.css
│ │ ├── top-bar.component_handy.css
│ │ ├── top-bar.component_handy.html
│ │ ├── top-bar.component.html
│ │ ├── top-bar.component.spec.ts
│ │ └── top-bar.component.ts
│ ├── icons-provider.module.ts
│ ├── pages
│ │ ├── login
│ │ │ ├── login.component.css
│ │ │ ├── login.component.html
│ │ │ ├── login.component.spec.ts
│ │ │ ├── login.component.ts
│ │ │ ├── login.module.ts
│ │ │ └── login-routing.module.ts
│ │ ├── monitor
│ │ │ ├── monitor.component.css
│ │ │ ├── monitor.component.html
│ │ │ ├── monitor.component.spec.ts
│ │ │ ├── monitor.component.ts
│ │ │ ├── monitor.module.ts
│ │ │ └── monitor-routing.module.ts
│ │ ├── monitor2
│ │ │ └── monitor2.module.ts
│ │ └── welcome
│ │ ├── welcome.component.css
│ │ ├── welcome.component.html
│ │ ├── welcome.component.ts
│ │ ├── welcome.module.ts
│ │ └── welcome-routing.module.ts
│ ├── reducers
│ │ └── index.ts
│ └── store
│ ├── catalog.actions.ts
│ ├── catalog.reducer.ts
│ └── userinfo.ts
├── assets
├── environments
│ ├── environment.prod.ts
│ └── environment.ts
├── favicon.ico
├── index.html
├── main.ts
├── polyfills.ts
├── styles.css
├── test.ts
└── theme.less

我使用这个命令输出29个文件:ll src/**/*.ts | wc -l
我使用此命令输出 32 个文件:ll src/{**,}/*.ts | wc -l,新文件是 src/main.ts、src/test.ts、src/polyfills.ts,它们直接位于 src 文件夹中

但是在python3中,
我使用 glob.glob("src/**/*.ts") 输出所有 32 个文件,
我使用 glob.glob("src/{**,}/*.ts") 输出所有 0 个文件

那么,标准 glob 语法是什么?

最佳答案

which is standard glob syntax?

因为您标记了linux,所以我假设您使用bash。 Bash 有 nostandard (即它不在 posix 中)与 globbing 无关的扩展 brace expansion .

:

ll src/{**,}/*.ts | wc -l

首先扩展为:

ll src/**/*.ts src/*.ts | wc -l

在进行大括号扩展时通过 bash。然后下一步会发生全局扩展。 Python 在解析 glob 参数时不会进行任何 shell 扩展,因此 Python 会搜索名为 { 并以 ,} 结尾的文件/目录(按字面意思理解)作为字符 - 因为没有找到,所以计数为 0。

所以你不是在比较通配符,而是在比较通配符与 shell 扩展和仅通配符。您可以将命令与禁用大括号扩展的 bash 进行比较 set +B 或使用另一个不带大括号扩展的 shell,例如 busyboxs。

关于Python glob 模块无法进行多重选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59597975/

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