gpt4 book ai didi

python - Docker 容器 Linux 在使用 * 读取 Python 参数时的奇怪行为

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:07 27 4
gpt4 key购买 nike

我构建了一个包含 Python3 (python 3.5) 的 Linux docker 容器,并运行一个 python 应用程序(带有 Keras 的标准 docker,类似于 here )。

一切都很好。问题是当我尝试运行读取参数的应用程序时,它会将字符 * 视为多个参数!例如,当我执行 python3 myapp.py * -1 时,它会打印 len(sys.argv): 6,但如果我执行 python3 myapp.py 1 -1,它会打印正确的数字。

print("len(sys.argv): "+str(len(sys.argv)))

基本上,我想查找目录中的所有文件,这是奇怪的行为。现在我在代码中硬编码了 *,它现在可以工作了。

有人经历过这种奇怪的行为吗?!这是为什么?

最佳答案

在实际调用的程序看到参数之前,Linux shell(与 Windows 不同)将通配符替换为空格分隔的文件和/或目录列表。您可以在 Linux shell 中尝试此操作,例如与

echo *

打印当前目录下的所有文件。

为了避免这种情况,星号必须用反斜杠转义。然后它将按原样交给程序(不带反斜杠)。例如

echo \*

演出

*

关于python - Docker 容器 Linux 在使用 * 读取 Python 参数时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57965992/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com