gpt4 book ai didi

python - 使用 glob 查找任意长度的数字

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:10 26 4
gpt4 key购买 nike

我正在寻找 glob 模式,它可以找到包含模式 myfile_[SomeNumber].txt 的所有文件

我天真的尝试是

glob.glob("myfile_[0-9]*.txt")

但这也会找到 myfile_[SomeNumber][AnyStuff].txt 格式的所有文件

这个答案显示了如何在固定长度上执行此操作,但在这种情况下这不是我想要的。 use python glob to find a folder that is a 14 digit number

最佳答案

您可能将正则表达式语法与 glob 结构混淆了。 [0-9]* 在 globbing 中表示“单个数字后跟零个或多个 any 字符”。所以删除 *

extended globbing 中有一个限定符“one or more”,但是 glob 不支持,所以别无选择,只能使用正则表达式,即做你自己的文件名模式匹配。有几种方法可以做到这一点,这里是一种:

import os
import re

files = []
for fname in os.listdir('.'):
if re.match(r"myfile_[0-9]+.txt", fname):
files.append(fname)

print files

请注意,RE 与您的不完全相同,我使用 + 表示“前面的模式之一”, * 表示“零或更多”- 所以数字是可选的,这可能是你想要的(我不确定)。

大部分代码可以作为列表理解来完成,但可以说这会失去一些可读性:

files = [fname for fname in os.listdir('.') 
if re.match(r"myfile_[0-9]+.txt", fname)]

关于python - 使用 glob 查找任意长度的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37863953/

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