有一个奇怪的问题,因为此代码在我的朋友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上运行?
答案 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,通配符将按字面传递。