我有一个简单的脚本blah.py(使用Python 2):
import sys
print sys.argv[1]
Run Code Online (Sandbox Code Playgroud)
如果我执行我的脚本:
python c:/..../blah.py argument
Run Code Online (Sandbox Code Playgroud)
它打印参数,但如果我执行脚本:
blah.py argument
Run Code Online (Sandbox Code Playgroud)
发生错误:
IndexError ...
所以参数不会传递给脚本.
PATH中的python.exe.blah.py的文件夹也在PATH中.
python.exe是执行*.py文件的默认程序.
问题是什么?
在powershell中,当我运行python程序时:
> python hello.py
Run Code Online (Sandbox Code Playgroud)
该程序直接在我正在使用的powershell窗口中运行并打印任何输出.但是当我尝试在没有显式调用python的情况下执行它时:
> hello.py
Run Code Online (Sandbox Code Playgroud)
它打开了一个单独的窗口.我如何解决这个问题,以便它的行为与我明确调用python时的行为方式相同?
我有.py扩展名与Python解释器相关的文件.但是,当我在命令行键入此类文件的名称并按下ENTER该文件时,将在默认文本编辑器(Notepad ++)中打开该文件,而不是使用关联的Python解释器运行.为什么?
Z:\1>where python
c:\Program Files\Python\2.7\python.exe
Z:\1>reg query HKCR\.py /ve
HKEY_CLASSES_ROOT\.py
(Default) REG_SZ Python.File
Z:\1>reg query HKCR\Python.File\shell\open\command /ve
HKEY_CLASSES_ROOT\Python.File\shell\open\command
(Default) REG_SZ c:\Program Files\Python\2.7\python.exe "%1" %*
Z:\1>echo %PATHEXT%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW
Z:\1>type a.py
from __future__ import print_function; import sys; print(sys.executable); print(sys.version)
Z:\1>a.py <--- this opens a.py in the default text editor
Run Code Online (Sandbox Code Playgroud)
我使用的是Windows Vista x64 Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
UPDATE
删除HKEY_CLASSES_ROOT\Unknown\shell\notepad++\command密钥后(我在过去创建了这个密钥,以便在没有扩展名的情况下将文件与Notepad ++相关联 - 请参阅如何设置默认程序,在Windows中没有扩展名的情况下打开文件?),其值为C:\Program Files …