在Python中使用argparse - 以及默认文件关联

时间:2012-07-27 20:22:26

标签: python windows argparse

我有一个名为“test.py”的文件,它使用简单的代码导入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']
如果我用

调用它,则从Windows获取

python "test.py" -e hello

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

调用它
test.py -e hello

它正在调用python但我得到一个错误“-e / - event is required” - 即它没有传递参数。

我在Windows中的关联设置为:

assoc .py
.py=Python.File

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

似乎无法解决这个问题,因为我让它在另一台计算机上运行,​​所以我猜我有一些路径或环境变量没有设置好吗?

提前致谢

2 个答案:

答案 0 :(得分:2)

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

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

应该是:

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

(将,更改为\

...如果这只是一个错字,那么this问题和答案可能会引起关注。

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

您可能希望同时查看:

  • HKEY_CURRENT_USER \ Software \ Classes \ .py和
  • HKEY_LOCAL_MACHINE \ SOFTWARE \类\的.py
那里的协会

答案 1 :(得分:2)

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