You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何给命令行调用的python -c传递参数?sys.argv使用遇异常

命令行给Python传参的正确方式

你遇到的问题核心是搞混了命令行参数和标准输入的区别:
sys.argv 用来获取启动Python时直接跟在命令后的参数,管道(|)传递的内容属于标准输入,不会被sys.argv捕获,所以你之前的命令里sys.argv只有['-c'](-c是告诉Python执行后面字符串代码的参数)。

正确传参方式分两种:

1. 直接传递命令行参数

如果要把a b c作为命令行参数传给Python,直接把参数写在命令末尾即可:

python -c "import sys; print([[str(x), a] for x,a in enumerate(sys.argv)])" a b c

执行后会输出:

[['0', '-c'], ['1', 'a'], ['2', 'b'], ['3', 'c']]

2. 读取管道传递的标准输入

如果是想用管道传递内容(比如echo "a b c"的输出),需要用sys.stdin来读取,而不是sys.argv:

echo "a b c" | python -c "import sys; print([[str(x), a] for x,a in enumerate(sys.stdin.read().split())])"

执行后会输出:

[['0', 'a'], ['1', 'b'], ['2', 'c']]

内容的提问来源于stack exchange,提问作者WestCoastProjects

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 08:37:37