您没有获取参数的原因是因为您破坏了 .py
关联,因此您可以双击这些文件以在 NotePad++ 中打开它们,
并随后打破了 .pyw 关联来做 .py 应该做的事情。
简而言之,您忘记在 Python.exe 命令的末尾包含 %*
您的“自定义”(损坏的).pyw 关联行。
ASSOC 和 FTYPE 命令用于显示关联和文件类型,即
运行什么程序来处理具有特定扩展名的文件。这是
这些命令在我的系统上产生了什么:
C:\test>assoc .py
.py=Python.File
C:\test>assoc .pyw
.pyw=Python.NoConFile
C:\test>ftype python.file
python.file="C:\Python27\python.exe" "%1" %*
C:\test>ftype python.noconfile
python.noconfile="C:\Python27\pythonw.exe" "%1" %*
正常的 .py 关联运行带有控制台窗口的 python.exe,以便您
可以看到打印语句的输出。
正常的 .pyw 关联运行没有控制台窗口的 pythonw.exe。
您可以看到在每个命令行的末尾,都有一个%*。这就是发送
命令的参数。 (其实%1是第一个参数,%*
表示“所有剩余参数”。)
当你尝试在命令行运行 python 文件而不键入它时
扩展或最初的“python”命令,会发生一些事情。
首先,PATHEXT 环境变量用于查找匹配的扩展名。
在您的情况下,它发现您的命令名称 "gcc_opt" + .PYW 导致
匹配文件。
然后查找 .PYW 文件的关联,找到文件类型
Python.NoConFile,在您的情况下设置为“python.exe”(应该是
pythonw.exe)。 (您可以在 HKEY_CLASSES_ROOT 下的注册表中看到这些。)
然后系统从找到的命令模板创建一个实际的命令行
对于那个文件类型,在你的情况下可能是
"[your-python-path]python.exe" "%1"
这告诉它只使用第一个参数,你的 python 脚本名称
“gcc_opt.pyw”。
快速解决方法是将%* 添加到该命令的末尾。
正确的解决方法是将事情恢复到正确的关联和
通过更标准的方法打开 Python 文件进行编辑(将图标拖放到
NotePad++,或者右键单击并使用 NotePad++ 编辑)。