Skip to main content
 首页 » 编程设计

python之为什么在命令行中使用 sys.argv 时没有引号

2025年05月04日14txw1958

这是一个错误吗?

#!/usr/bin/env python3.6 
# filename: tmp.py 
import sys 
 
print(sys.argv) 

调用:

python tmp.py find . -name '*.py' 

实际输出:

['tmp.py', 'find', '.', '-name', '*.py'] 

预期输出:

['tmp.py', 'find', '.', '-name', "'*.py'"] 

请注意实际输出中缺少引号。

请您参考如下方法:

不,因为你的 shell 在将参数传递给 python 之前删除了引号(否则它会扩展 *.py 通配符)

要得到你想要的,你需要:

python tmp.py find -name "'*.py'" 

请注意,此行为依赖于 shell。在 Windows 上,由于单引号没有特别的含义,传递 '*.py',你会得到:

['tmp.py', 'find', '.', '-name', "'*.py'"] 

另请注意,引号保护的通配符在 Python 方面没有真正的意义,因为您需要去除引号才能使用 glob.glob

评估它们