为什么无法使用 sys.argv 将字符串“curve?”传递给 python 脚本

Why is it impossible to pass the string "curve?" to a python script using sys.argv

提问人:Jay Gudger 提问时间:8/11/2023 最后编辑:BarmarJay Gudger 更新时间:8/11/2023 访问量:39

问:

第一次发帖,长期谷歌用户。 好的,我有一个解决方法,但是,就我的生命而言,我无法弄清楚为什么会发生这种情况。

import sys

print(sys.argv)

这不会打印“曲线?如果像这样传递python3 script.py curve?

它打印“曲线”

我试过了

python3 script.py 'curve?'

python3 script.py "curve?"`

python3 script.py curve\?`

python3 script.py \curve?`

python3 script.py r'curve?'

在许多其他组合中。它总是返回,而不带 orcurve?curve\ ?

这就是它变得奇怪的地方,它会正确打印单词的不同部分。

python3 script.py cuve?

python3 script.py cure?

python3 script.py urve?

所有打印都正确,但它变得更奇怪,因为

python3 script.py curv?

指纹curve

就像我说的,我有一个解决方法。但我真的希望有人能解释为什么这可能行不通。我确实有一个有点奇怪的设置,所以如果没有其他人可以复制它,我会假设这是我的设置。我在 Windows 64 上从 msys1 运行 0.

python sys msys2

评论

4赞 Barmar 8/11/2023
?对 shell 有特殊含义,它是一个通配符。如果您有名为 等的文件,它将扩展到这些文件名。curve1, curve2
0赞 Barmar 8/11/2023
但是把它放在引号里应该可以解决这个问题。
1赞 Bibhav 8/11/2023
和 打印 . 仅当有文件时才打印python3 script.py "curve?"python3 script.py curve\?curve?python3 script.py curv?curvecurve
0赞 Jay Gudger 8/11/2023
@Bibhav 就是这样!实际上有一个“曲线”目录。这是有道理的,因为“?”是通配符。谢谢!快要把我逼疯了。

答: 暂无答案