2012-07-27 105 views
2

我称之为“test.py”进口即用简单的代码argparse文件:使用Python中argparse - 和默认文件关联

import argparse 
parser = argparse.ArgumentParser(description='Description') 
parser.add_argument('-e','--event', help='event', required=True) 
args = vars(parser.parse_args()) 
myArgument = args['event'] 

从窗户如果我

python "test.py" -e hello 
叫它

它工作正常,但如果我尝试直接与

test.py -e hello 

它调用的Python调用它,但我得到一个错误“-e/- 事件为r被认为是“ - 即它没有通过争论。

我在窗口关联被设置为:

assoc .py 
.py=Python.File 

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

似乎无法弄清楚这一点,因为我有工作在另一台计算机上,所以我猜我有一些路径或环境变量没有正确设置?

在此先感谢

+0

相关:[从Windows上的PATH运行时,Python脚本失去参数](http://stackoverflow.com/q/10281595/95735),[如何在Windows中执行Python脚本?](http:// stackoverflow。 COM/q /95735分之1934675) – 2012-07-28 07:16:55

回答

1

我认为您的文件关联存在错误。 我想这:

Python.File = "C:\Python27,python.exe" "%1" %* 

应该是:

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

(改变,\

...如果这只是一个错字这里,然后this问题和答案可能是出于兴趣。

基本上,这些关联不一定是您在运行程序时调用的。 (即我基本上和你有相同的关联,但是如果我运行一个python程序,如:“test.py -e hello”,程序test.py只是在我的编辑器中打开 - 它实际上并不运行python程序)

您可能要在两个看起来:

  • HKEY_CURRENT_USER \ Software \ Classes下\的.py,和
  • HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes下\的.py

消协那里。

1

ftype显示HKEY_LOCAL_MACHINE\Software\Classes中的内容,但此注册表分支中的值可能已被HKEY_CURRENT_USER\Software\Classes中的值覆盖。看看reg query HKCU\Software\Classes\Python.File\shell\open\command /ve的输出是什么。我猜你的问题是由于此注册表项中缺少%*片段造成的。