繁体   English   中英

python3 glob.glob正则表达式仅获得第一个匹配项

[英]python3 glob.glob regex only getting first match

有一个奇怪的问题,因为这段代码在我的朋友mac上似乎可以很好地工作,但是在我的ubuntu 16.04上却根本无法工作。

通过我的python,我运行以下命令

filenames = glob.glob(opts['-I'])

试图匹配一组32个文本文件,格式为TEXT / text01.txt

我最初的正则表达式如下

python -I TEXT/text??

其中返回零个文件。

我也尝试过

python -I TEXT/text*

似乎只返回text01.txt。 是否有相应的正则表达式可以获取所有文本文件,而不仅仅是第一个文件?是否有任何理由使它在Mac上有效但在ubuntu上无效?

打电话时的问题

python -I TEXT/text*

TEXT/text*被shell扩展了。 因此,这些是传递给python的确切参数:

-I TEXT/text01.txt TEXT/text02.txt (and other matching files)

argparser将text01.txt分配给-I选项,其他参数将被忽略(检查位置参数以查找它们)。 glob.glob返回它glob.glob的确切文件名(请注意,由于缺少扩展名, text??text01.txt不匹配,或者将其text01.txt text??.txt

您需要引用通配符(而不是正则表达式)

python -I "TEXT/text*"

或转义通配符:

python -I TEXT/text\*

或者使用更史前的命令行(例如Windows CMD),通配符将按原样传递。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM