2011-05-24 42 views
2

在py_script.py:Windows无法在ARGS传递给python脚本

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上的py 2.6.4。

+1

适用于Win 7和2.7的我。 1. – 2011-05-24 11:36:18

+0

Windows真的在用python解析argv :( – 2011-05-24 18:25:16

回答

1

基于JTP的答案。
好吧,我搞砸了注册表了一下。

这是什么,我认为是操作步骤:

  1. assoc命令的.py = Python.File

  2. 通过胜利探险家挑.py文件,右键 - > x64 - >打开方式>浏览到c:\ Python26 \ python.exe,选择'总是打开此..'框。 这个变化效果立即REG值

    HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \ Explorer中\ FileExts.py \ UserChoice

    Python.File

  3. 组HKEY_CLASSES_ROOT \ Python.File \壳\打开\命令到 “C:\ Python26 \ python。exe文件” “%1” %2%3%4%5%6%7%8%9

注:从以前的经验,我敢肯定的事情,预计乱用混合版本 卸载/顺便说一下,重新安装应该是要走的路。顺便说一下,我不想这么做,因为包括我从源代码构建的所有软件包都将是一团糟。

+0

恭喜您解决了这个问题 – JTP 2011-05-24 14:49:20

+0

最近又用了Win7 32位机器,这次在HKCU \ Software \ Classes \ py_auto_file \ shell里也是一样的\打开\命令..通过搜索注册表对于c:\ python26 \ python.exe条目。 – Hanan 2011-12-14 16:17:27

+0

我也是。我改变了HKEY_CLASSES_ROOT \ py_auto_file \ shell \ open \命令添加%*,因此:“C:\ Python27 \ python.exe”“%1”%* – peter2108 2012-02-20 11:04:56

0

我知道这不能回答你的问题,但python py_script.py是执行Python脚本的标准方式。

5

我在Win 7

如果要通过文件扩展名单独调用Python程序使用2.7.1,您应检查文件类型关联和命令行参数。在Windows上安装/重新安装多个版本的Python时遇到了问题。

C:\dv>assoc .py 
.py=Python.File 

C:\dv>ftype Python.File 
Python.File="C:\Python27\python.exe" "%1" %* 

此TechNet页面可以提供一些更详细的背景。

http://technet.microsoft.com/en-us/library/bb490912.aspx