使用glob排除时间序列文件

问题描述 投票:0回答:2

我在目录中的文件是跨越数年的每月数据,其字符如0001-01-01、0001-02-01,...,0005-01-01,...,0010-12-01(yyyy -mm-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]}*,该方法不起作用。

谢谢,

python glob
2个回答
0
投票

只需将两个glob加在一起。

files = glob.glob(mydirectory/filename-000[!1]*) + glob.glob(mydirectory/filename-0010*)

0
投票

这样做吧

import glob
from pprint import pprint

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

[?是“任何字符”的地方,就像*是“任何字符串”的语言]

对我来说,这很好用。

(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 #
© www.soinside.com 2019 - 2024. All rights reserved.