无法通过使用argparse和Python 3.4.2 arguements在Windows 7(c

2019-10-23 20:11发布

我已经升级到Python 3.4.2和argparse(从optparse),但它们似乎也没有认识到命令行选项。 作为一个简单的测试,我跑这一点;

#test_argparse.py

def main():
    import argparse

    parser = argparse.ArgumentParser(description='Execute database query.')

    parser.add_argument("-q", "--query", dest="query",
                  help="Name of the query file to be run")

    args = parser.parse_args()

    print(args)

if __name__ == '__main__':
     main()

在命令行中,当我运行

test_argparse.py -q get_msre_for_book

我得到:

Namespace(query=None)

但是,当我在IDE中运行:

*** Python 3.4.2rc1 (v3.4.2rc1:8711a0951384, Sep 21 2014, 21:16:45) [MSC v.1600 32 bit (Intel)] on win32. ***

Command Line : -q get_msre_for_book
Namespace(query='get_msre_for_book')

我试图通过启动脚本

os.system('python.exe', '<path to script>test_argparse.py -q get_msre_for_book')

但是还是失败,是没有提出任何查询,如上图所示。 我已经通过发动工作了一本

subprocess.call

但我宁愿不用。 再次,任何建议或想法感激地接受。

Answer 1:

为了给封了这个问题,这是2条评论认为解决这个问题:

有早期的SO关于传递命令行参数在Windows 7的解决方案涉及获得一个注册表链接正确的问题。 stackoverflow.com/questions/2640971,stackoverflow.com/questions/9880540。 E,G, “C:\的Python \ Python33 \ python.exe” “%1” %*。

问题解决了 - 非常感谢你 - 但要精确的注册表项必须是C:\ Python的\ Python33 \ python.exe“‘%1’%”(添加的最后一个双引号)



文章来源: can't pass arguements using argparse and python 3.4.2 on Windows 7