有一个奇怪的问题,因为此代码在我的朋友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返回它收到的确切文件名(请注意,由于缺少扩展名或将其设为text??,因此text01.txttext??.txt不匹配)

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

python -I "TEXT/text*"


或转义通配符:

python -I TEXT/text\*


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

关于python - python3 glob.glob正则表达式仅获得第一个匹配项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52854180/

10-10 19:41
查看更多