使用命令行参数创建Python shell脚本

使用命令行参数创建Python shell脚本,python,shell,scripting,argparse,Python,Shell,Scripting,Argparse,所以我创建了两个模块:module1.py和module2.py,它们都工作得很好 但是现在我想通过指定相应的选项,使用脚本从命令行调用它们。例如: python launchscript.py -l somefile.txt 或 第一个选项应发送参数并从module1.py执行main(),第二个选项应从module2.py执行main() 这个启动脚本应该是可扩展的,因为我添加了更多的内部模块,它应该提供内置的命令行帮助 我是一名python初学者,如有任何帮助,将不胜感激我回应自己: #

所以我创建了两个模块:module1.py和module2.py,它们都工作得很好

但是现在我想通过指定相应的选项,使用脚本从命令行调用它们。例如:

python launchscript.py -l somefile.txt

第一个选项应发送参数并从module1.py执行main(),第二个选项应从module2.py执行main()

这个启动脚本应该是可扩展的,因为我添加了更多的内部模块,它应该提供内置的命令行帮助


我是一名python初学者,如有任何帮助,将不胜感激

我回应自己:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on Nov 19, 2014


@author: yllanos
'''
# Standard libraries
import sys
import argparse

# External libraries

# Product modules
import module1 as dbs
import module2 as gen

def main(argv):
    parser = argparse.ArgumentParser()
    parser.add_argument('-f', '--file', action='store', dest='file',
                help='Does something with a file')
    parser.add_argument('-x', '--xml', action='store_true', dest='xml_switch',
                help='Does some other thing')
    parser.add_argument('-v', '--version', action='version', version='0.1')
    ar = parser.parse_args()

    if ar.file:
        dbs.main(argv[1])
    else:
        None

    if ar.xml_switch:
        gen.main()
    else:
        None

if __name__ == '__main__':
    if len(sys.argv[1:]) == 0:
        print "Usage: ebiller command [OPTION]"
        exit
    else:
        main(sys.argv[1:])

您已标记此
argparse
-您是否尝试实际使用该库?你的问题是什么?正确。我试图使用argparse,但是没有用,我仍然迷路了,所以我决定指定整个需求。因此,考虑到这一点,我的问题是如何从Python实现命令行shell?那么,您的问题太宽泛了,因此,这不是一个代码编写或教程服务。然而,如果您提供了一个关于您尝试的代码和一个精确的问题描述(错误回溯、输入以及预期和实际输出等),那么这个主题就会出现。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on Nov 19, 2014


@author: yllanos
'''
# Standard libraries
import sys
import argparse

# External libraries

# Product modules
import module1 as dbs
import module2 as gen

def main(argv):
    parser = argparse.ArgumentParser()
    parser.add_argument('-f', '--file', action='store', dest='file',
                help='Does something with a file')
    parser.add_argument('-x', '--xml', action='store_true', dest='xml_switch',
                help='Does some other thing')
    parser.add_argument('-v', '--version', action='version', version='0.1')
    ar = parser.parse_args()

    if ar.file:
        dbs.main(argv[1])
    else:
        None

    if ar.xml_switch:
        gen.main()
    else:
        None

if __name__ == '__main__':
    if len(sys.argv[1:]) == 0:
        print "Usage: ebiller command [OPTION]"
        exit
    else:
        main(sys.argv[1:])