【发布时间】:2015-06-14 22:32:47
【问题描述】:
我有两台装有 Windows 的电脑,我只是在其中一台上发现,如果我直接运行 python 代码,比如:
test_args.py input1 input2
Python 将无法识别我提供的输入,但这有效:
python test_args.py input1 input2
我试过代码:
import sys
print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
而第一种方式(test_args.py input1 input2)返回:
Number of arguments: 1 arguments.
Argument List: ['D:\\Test\\args\\test_args.py']
虽然第二种方式(python test_args.py input1 input2)返回:
Number of arguments: 3 arguments.
Argument List: ['D:\\Test\\args\\test_args.py', 'input1', 'input2']
知道这会发生什么吗? 此问题仅发生在我的一台计算机上,两台计算机的 Windows 版本相同。
谢谢!
已解决:
我在 regedit 关键字“python”中搜索,发现在“C:\Python27\python.exe”“%1”之后缺少 %* 的两个键:
计算机\HKEY_CLASSES_ROOT\Applications\python.exe
计算机\HKEY_CLASSES_ROOT\py_auto_file\shell\open\command
并且 .py 与 py_auto_file 相关联,即使我尝试了 assoc .py Python.File
更改两个键解决了这个问题,谢谢!
【问题讨论】:
-
也许你在两者中都安装了不同版本的 python。尝试运行
python -V来确认版本号。 -
不知何故您丢失了正确的文件关联。 Python 2.7 的默认值为
assoc .py=Python.File和ftype Python.File="C:\Python27\python.exe" "%1" %*。 -
assoc .py=Python.File 由于某种原因没有改变 .py 的关联。刚刚发现 HKEY_CLASSES_ROOT\.py 下的 .py 的值是 py_auto_file 出于某种原因。更改 py_auto_file 中的值可以解决这个问题,谢谢!
-
HKCR是HKLM\Software\Classes(本地机器)和HKCU\Software\Classes(用户)的合并视图。HKCUhive 中的用户设置在合并视图中优先。但是 cmd shell 的assoc和ftype命令只编辑HKLM设置。 -
是的,
py_auto_file和pyw_auto_file是罪魁祸首。我刚刚在一台全新的 Windows 8 机器上安装了 anaconda。设置所有assoc和ftype值都不起作用,但是在修复这两个值之后一切都很好。
标签: python windows cmd command-line-arguments