首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用glob排除时间序列文件

使用glob排除时间序列文件
EN

Stack Overflow用户
提问于 2019-12-11 22:28:07
回答 3查看 133关注 0票数 0

我的目录中的文件是跨越数年的月度数据,在每个文件名的中间有0001-01、0001-02-01、.、0005-01-01、.、0010-12-01 (Yyyy Dd)等字符。

现在,我想不包括0001*文件。如果我写的sorted(glob.glob(mydirectory/filename-000[!1]*))只给我0002 ~ 0009文件,而0010文件不包括在内。

我应该怎么做才能只排除0001*文件?

如果我写的sorted(glob.glob(mydirectory/filename-000[2-9]*))也只给我0002-0009文件,我应该做什么来包括0010*文件?

我也尝试过filename-{000[2-9],00[10-12]}*,它不起作用。

谢谢,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-12-11 23:03:06

glob支持Unix模式规则,但不支持更复杂的表达式。但是,在使用Python时,可以使用许多筛选技术,包括正则表达式。如果我的目录如下所示:

代码语言:javascript
运行
复制
$ find
.
./mydirectory
./mydirectory/filename-0001-01-01
./mydirectory/filename-0001-02-01
./mydirectory/filename-0010-12-01
./mydirectory/filename-0005-01-01

然后

代码语言:javascript
运行
复制
[f for f in glob.glob(r"mydirectory/filename-*") if "0001" not in f]

将返回:

代码语言:javascript
运行
复制
['mydirectory/filename-0010-12-01', 'mydirectory/filename-0005-01-01']

这将在this SO answer中得到进一步解释。

票数 0
EN

Stack Overflow用户

发布于 2019-12-11 22:32:21

把两个球加在一起。

代码语言:javascript
运行
复制
files = glob.glob(mydirectory/filename-000[!1]*) + glob.glob(mydirectory/filename-0010*)
票数 0
EN

Stack Overflow用户

发布于 2019-12-11 22:34:45

像这样做

代码语言:javascript
运行
复制
import glob
from pprint import pprint

pprint(sorted(glob.glob("filename-???[!1]*")))

其中?是“任意字符”,就像*代表“任意字符字符串”一样

对我来说,这个效果很好。

代码语言:javascript
运行
复制
(stackoverflow)  ~/PycharmProjects/stackoverflow  ls -la filename-00*
-rw-r--r--  1 dude  staff  0 Dec 11 23:31 filename-0001
-rw-r--r--  1 dude  staff  0 Dec 11 23:31 filename-0002
-rw-r--r--  1 dude  staff  0 Dec 11 23:31 filename-0003
-rw-r--r--  1 dude  staff  0 Dec 11 23:31 filename-0004
-rw-r--r--  1 dude  staff  0 Dec 11 23:31 filename-0005
-rw-r--r--  1 dude  staff  0 Dec 11 23:31 filename-0006
-rw-r--r--  1 dude  staff  0 Dec 11 23:31 filename-0007
-rw-r--r--  1 dude  staff  0 Dec 11 23:31 filename-0008
-rw-r--r--  1 dude  staff  0 Dec 11 23:31 filename-0009
-rw-r--r--  1 dude  staff  0 Dec 11 23:31 filename-0010
(stackoverflow)  ~/PycharmProjects/stackoverflow # python test123.py
['filename-0002',
 'filename-0003',
 'filename-0004',
 'filename-0005',
 'filename-0006',
 'filename-0007',
 'filename-0008',
 'filename-0009',
 'filename-0010']
(stackoverflow)  ~/PycharmProjects/stackoverflow #
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59295079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档