Windows无法将args传递给python脚本

时间:2011-05-24 11:19:49

标签: python windows windows-7 command-line

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

3 个答案:

答案 0 :(得分:5)

我在Win 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页面可以提供更详细的背景信息。

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

答案 1 :(得分:1)

基于jtp的回答。
好吧,我搞砸了注册表。

这就是我认为的步骤:

  1. 操作

    assoc .py = Python.File

  2. 通过win explorer选择.py文件,右键单击 - > x64 - >打开>浏览到c:\ Python26 \ python.exe选择'总是打开这个..'框。 这实际上会立即改变reg值

    HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts.py \ UserChoice

    Python.File

  3. 将HKEY_CLASSES_ROOT \ Python.File \ shell \ Open \ Command设置为 “C:\ Python26 \ python.exe”“%1”%2%3%4%5%6%7%8%9
  4. 注意:根据之前的经验,我确信预计会混淆混合版本。 卸载/重新安装应该是要走的路。顺便说一下,我不想通过所有包裹来解决这个问题,包括我从源码中构建的包裹,这将是一团糟。

答案 2 :(得分:0)

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