Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows无法将参数传递给python脚本_Python_Windows_Windows 7_Command Line - Fatal编程技术网

Windows无法将参数传递给python脚本

Windows无法将参数传递给python脚本,python,windows,windows-7,command-line,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\p

在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
我明白了

如何使我的Win7环境按预期运行

一些细节:
win7是64位。

win7上的py2.6.6,winXP上的py2.6.4。

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

我在win7上使用的是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页面可以提供一些更详细的背景信息

基于jtp的回答。
我把注册表搞砸了

这就是我认为的步骤:

  • py=Python.File

  • 通过win explorer选择一个.py文件,右键单击->x64->打开方式>浏览到c:\Python26\python.exe选择“始终使用此..打开”框。 这实际上会立即改变reg值

    HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts.py\UserChoice

    Python.File

  • 将HKEY\U CLASSES\U ROOT\Python.File\shell\Open\Command设置为 C:\Python26\python.exe“%1”%2%3%4%5%6%7%8%9
  • 注意:根据以前的经验,我确信混合版本会把事情搞砸。
    卸载/重新安装应是可行的方法。顺便说一句,我不想经历这些,因为所有的软件包,包括我从源代码构建的软件包,都会一团糟。

    在Win7和2.7.1上对我有效。Windows在python中的argv解析非常糟糕:(祝贺你解决了这个问题。最近在一台Win32位机器上又出现了这个问题。解决方案是一样的,这次是在HKCU\Software\Classes\py_auto_file\shell\open\command中。通过搜索注册表中的c:\python26\python.exe项来实现的。我还更改了HKEY_Classes\u ROOT\py_auto_file\shell\open\command添加%*从而:C:\Python27\python.exe“%1”*
    C:\dv>assoc .py
    .py=Python.File
    
    C:\dv>ftype Python.File
    Python.File="C:\Python27\python.exe" "%1" %*