这是我的 test-argparse.py 软件的摘录:
from __future__ import print_function
import argparse
import sys
def manage_command_line():
parser = argparse.ArgumentParser(description='Simple Description')
parser.add_argument('code', type=str, help='Project code')
return parser.parse_args()
args = manage_command_line()
print(args)
print(sys.version)
当作为解释器的参数调用时(结果是正确的和预期的):
c:\Python27\python.exe test-argparse.py KB130
Namespace(code='KB130')
2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)]
但是如果直接调用它,依赖于windows文件关联,结果就完全不同了:
C:\Users\PGO\Documents\docauto>test-argparse.py KB130
usage: test-argparse.py [-h] code
test-argparse.py: error: too few arguments
Windows文件组关联和重定向的定义是标准的,如Python 2.7.14手册(第3.3.4章)中所述:
C:\Users\PGO\Documents\docauto>assoc .py
.py=Python.File
C:\Users\PGO\Documents\docauto>ftype Python.File
Python.File="C:\Python27\python.exe" "%1" %*
C:\Users\PGO\Documents\docauto>
与我的系统路径一致,虽然我的Python版本是2.7.12而不是2.7.14,但这可能完全没有区别。
问题:在这两种情况下,是否有办法确定一致的结果?我希望应用程序的一致行为与其执行方式无关。
答案 0 :(得分:1)
这就是我得到的:
C:\Users>ftype Python.File
Python.File =“C:\ Windows \ py.exe”“%L”%*
这两种情况都适合我。我有Python 3.6,可以解释可执行文件名称的区别。