Windows未能将参数传递给python脚本
在 py_script.py 文件中:
import os
import sys
l = len(sys.argv)
if l == 1:
print 'no args'
else:
if l > 1:
print 'first arg is %s'%sys.argv[1]
if l > 2:
print 'second arg is %s'%sys.argv[2]
现在在我的 WinXP 系统上使用命令行:
d:\path\py_script.py 1 2
得到的结果是
first arg is 1
second arg is 2
但是在我的 Win7 系统上,我得到的是
no args
如果我执行
d:\path\python py_script.py 1 2
我得到的是
first arg is 1
second arg is 2
我该如何让我的 Win7 环境表现得和预期的一样呢?
一些细节:
Win7 是 64 位的。
在 Win7 上使用的是 py2.6.6,而在 WinXP 上使用的是 py2.6.4。
3 个回答
0
我知道这不是在回答你的问题,但 python py_script.py
是运行Python脚本的标准方法。
5
我在Windows 7上使用的是2.7.1版本。
如果你想通过文件扩展名来运行Python程序,你需要检查一下文件类型的关联和命令行参数。我在Windows上安装或重新安装多个版本的Python时遇到过一些问题。
C:\dv>assoc .py
.py=Python.File
C:\dv>ftype Python.File
Python.File="C:\Python27\python.exe" "%1" %*
这个TechNet页面可以提供一些更详细的背景信息。
1
根据jtp的回答。
我在注册表上搞错了一些东西。
我认为步骤是这样的:
首先,输入
assoc .py=Python.File
然后在文件管理器中找到一个.py文件,右键点击 -> x64 -> 选择“打开方式” -> 浏览到 c:\Python26\python.exe,勾选“总是用这个打开”。这样做会立即改变注册表中的值。
具体来说,就是把
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts.py\UserChoice
改成
Python.File- 接着,把 HKEY_CLASSES_ROOT\Python.File\shell\Open\Command 设置为 "C:\Python26\python.exe" "%1" %2 %3 %4 %5 %6 %7 %8 %9
注意:根据之前的经验,我知道如果混用不同版本,事情可能会出错。卸载再重新安装应该是解决办法。不过,我不想这么做,因为我安装了很多包,还有一些是我自己编译的,搞得很麻烦。