【问题标题】:Create Python shell script with command line arguments使用命令行参数创建 Python shell 脚本
【发布时间】:2015-01-18 05:52:20
【问题描述】:

所以我创建了几个模块:module1.py 和 module2.py,它们都工作正常。

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

python launchscript.py -l somefile.txt

或者

python launchscript.py -x

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

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

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

【问题讨论】:

  • 您已标记此argparse - 您是否尝试过实际使用该库?你的问题到底是什么?
  • 正确。我尝试使用 argparse 但无济于事,我仍然迷路,所以我决定指定整个要求。所以考虑到这一点,我的问题是如何从 Python 实现命令行 shell?
  • 那么您的问题对于 SO 来说太宽泛了 - 这不是代码编写或教程服务。但是,如果您提供了您尝试的代码的minimal example 和准确的问题描述(错误回溯、输入以及预期和实际输出等),这将是主题。

标签: python shell scripting argparse


【解决方案1】:

我在回应自己:

#!/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:])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-04
    • 2013-03-03
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    相关资源
    最近更新 更多