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

时间:2018-10-17 11:48:42

标签: python macos ubuntu ubuntu-16.04 command-line-arguments

有一个奇怪的问题,因为此代码在我的朋友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上运行?

1 个答案:

答案 0 :(得分:0)

打电话时出现的问题

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返回它收到的确切文件名(请注意,text??text01.txt不匹配,因为您缺少扩展名,或将其设为text??.txt

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

python -I "TEXT/text*"

或转义通配符:

python -I TEXT/text\*

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