Windows未能将参数传递给python脚本

2 投票
3 回答
2565 浏览
提问于 2025-04-16 18:14

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

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

1

根据jtp的回答。
我在注册表上搞错了一些东西。

我认为步骤是这样的:

  1. 首先,输入

    assoc .py=Python.File

  2. 然后在文件管理器中找到一个.py文件,右键点击 -> x64 -> 选择“打开方式” -> 浏览到 c:\Python26\python.exe,勾选“总是用这个打开”。这样做会立即改变注册表中的值。

    具体来说,就是把
    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

注意:根据之前的经验,我知道如果混用不同版本,事情可能会出错。卸载再重新安装应该是解决办法。不过,我不想这么做,因为我安装了很多包,还有一些是我自己编译的,搞得很麻烦。

撰写回答