<p>当你执行一个脚本而没有在前面键入“python”时,你需要知道Windows如何调用程序的两件事。首先是找出Windows认为它是什么类型的文件:</p>
<pre>
C:\>assoc .py
.py=Python.File
</pre>
<p>接下来,您需要知道Windows如何使用该扩展执行任务。它与文件类型“Python.file”关联,因此此命令显示它将执行的操作:</p>
<pre>
C:\>ftype Python.File
Python.File="c:\python26\python.exe" "%1" %*
</pre>
<p>所以在我的机器上,当我输入“blah.py foo”时,它将执行这个确切的命令,结果与我自己输入完整的命令没有任何区别:</p>
<pre>
"c:\python26\python.exe" "blah.py" foo
</pre>
<p>如果您键入相同的内容,包括引号,那么您将得到与只键入“blah.py foo”时相同的结果。现在你可以自己解决剩下的问题了。</p>
<p>(或者在您的问题中发布更多有用的信息,比如您在控制台中看到的内容的实际剪切和粘贴副本。请注意,做这类事情的人会得到他们的问题的投票结果,他们也会得到声誉积分,更多的人可能会帮助他们获得好的答案。)</p>
<h2>从评论中引入:</h2>
<p>即使assoc和ftype显示了正确的信息,参数也可能被删除。在这种情况下,可能有帮助的是直接修复Python的相关注册表项。设置</p>
<pre><code>HKEY_CLASSES_ROOT\Applications\python26.exe\shell\open\command
</code></pre>
<p>关键:</p>
<pre><code>"C:\Python26\python26.exe" "%1" %*
</code></pre>
<p>很可能,以前,<code>%*</code>丢失了。同样,设置</p>
<pre><code> HKEY_CLASSES_ROOT\py_auto_file\shell\open\command
</code></pre>
<p>同样的价值。见<a href="http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/" rel="noreferrer">http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/</a></p>
<p><a href="https://i.stack.imgur.com/Dpdzv.png" rel="noreferrer"><img src="https://i.stack.imgur.com/Dpdzv.png" alt="example registry setting for python.exe"/></a>
<code>HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command</code>注册表路径可能不同,请使用<code>python26.exe</code>或<code>python.exe</code>或注册表中已有的任何路径。</p>
<p><a href="https://i.stack.imgur.com/mFI0X.png" rel="noreferrer"><img src="https://i.stack.imgur.com/mFI0X.png" alt="enter image description here"/></a>
<code>HKEY_CLASSES_ROOT\py_auto_file\shell\open\command</code></p>