有一个奇怪的问题,因为此代码在我的朋友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.txt
与text??.txt
不匹配)您需要引用通配符(而不是正则表达式)
python -I "TEXT/text*"
或转义通配符:
python -I TEXT/text\*
或者使用更史前的命令行(例如Windows CMD),通配符将按字面传递。
关于python - python3 glob.glob正则表达式仅获得第一个匹配项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52854180/