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

Python 3.7中使用-c选项为何sys.argv[0]未显示'-c'?

你的理解误区在于对-c选项的使用场景判断

哦,我明白你困惑的点在哪里啦!其实是你混淆了Python解释器的命令行选项和自定义脚本的命令行参数这两个概念~

先搞清楚官方文档里-c选项的正确用法

官方文档说的argv[0]会被设为'-c'的场景,是直接用-c选项让Python解释器执行一段字符串代码,而不是运行某个脚本文件。举个正确的例子:

py -c "import sys; print(sys.argv)" test

执行这个命令后,输出会是:

['-c', 'test']

这时候-c是传递给Python解释器的选项,解释器不会加载任何脚本文件,直接执行-c后面的代码,所以sys.argv[0]就是'-c',后面的test是这段代码的参数。

你的操作为什么不符合预期

你执行的命令是:

py main.py -c test

这里的-c test并不是传递给Python解释器的选项,而是作为main.py这个脚本的命令行参数。Python解释器的工作流程是:

  1. 找到并加载main.py脚本
  2. 把脚本名main.py设为sys.argv[0]
  3. 把后面的-c和test依次设为sys.argv[1]和sys.argv[2]
    所以你得到的输出['main.py', '-c', 'test']完全是正常的,和文档描述不冲突——因为你的用法根本不是文档里说的-c选项的使用场景呀!

一句话总结

-c是Python解释器的专属选项,必须直接跟在py/python命令后面,不能放在脚本文件名之后。如果放在脚本名后面,它就只是脚本的普通参数而已~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:06:35