无法在 Windows 7 上使用 argparse 和 python 3.4.2 传递参数
can't pass arguements using argparse and python 3.4.2 on Windows 7
我已经升级到 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
但我宁愿不必这样做。再次感谢收到的任何建议或想法。
为了结束这个问题,以下是解决问题的 2 条评论:
There are earlier SO questions about passing commandline arguments in Windows 7. The solutions involve getting a registry link right. whosebug.com/questions/2640971, whosebug.com/questions/9880540. e,g, "C:\Python\Python33\python.exe" "%1" %*.
That fixed it - thank you very much - but to be precise the registry entry needs to be C:\Python\Python33\python.exe" "%1" %" (added the final double quote)
我已经升级到 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
但我宁愿不必这样做。再次感谢收到的任何建议或想法。
为了结束这个问题,以下是解决问题的 2 条评论:
There are earlier SO questions about passing commandline arguments in Windows 7. The solutions involve getting a registry link right. whosebug.com/questions/2640971, whosebug.com/questions/9880540. e,g, "C:\Python\Python33\python.exe" "%1" %*.
That fixed it - thank you very much - but to be precise the registry entry needs to be C:\Python\Python33\python.exe" "%1" %" (added the final double quote)