当在bash命令行中将glob表达式作为参数传递给脚本时,它会被扩展,并且匹配的文件会被解压缩到sys.argv
中:
# stuff.py
import sys
print(sys.argv)
host:~$ python stuff.py a*
['stuff.py', 'a1', 'a2', 'a3']
我希望将这些文件作为单个
sys.argv
元素,放入一个容器中:host:~$ python stuff.py a*
['stuff.py', ['a1', 'a2', 'a3']]
我知道将glob表达式放在引号中并使用`glob`模块可以解决这个问题:
import sys
import glob
print(glob.glob(sys.argv[1]))
host:~$ python stuff.py "a*"
['a1', 'a2', 'a3']
然而,这需要在参数周围添加引号,因此无法直接使用Tab键自动补全。
是否有可能防止命令行参数被扩展?
tab
,也不明白使用Python中的glob
模块时你缺少了什么。 - janosfile_00
,则可以附加\*
或"*"
。因此,例如命令行可能看起来像python stuff.py file_00"*"
,传递给 Python 的参数将是file_00*
,并且glob
模块将按照应有的方式处理它。 - janos