项目方案:sh 执行python脚本时如何获取脚本执行参数

1. 引言

在实际的项目开发中,我们经常会遇到需要在shell脚本中执行Python脚本的情况。而在执行Python脚本时,我们可能需要传递一些参数给Python脚本,以便在脚本中进行相应的处理。本文将介绍如何在shell脚本中执行Python脚本时获取脚本的执行参数的方法,并给出相应的代码示例。

2. 获取脚本执行参数的方法

有多种方法可以在shell脚本中获取脚本的执行参数,下面将分别介绍这些方法,并给出相应的代码示例。

2.1 使用位置参数

shell脚本中,可以使用$0表示脚本本身,$1、$2、$3...表示脚本执行时传递的参数。在执行Python脚本时,可以将参数作为位置参数传递给脚本。

示例代码如下:

#!/bin/sh

python_script_path="path_to_python_script.py"
param1="value1"
param2="value2"

python $python_script_path $param1 $param2

在Python脚本中,可以通过sys.argv获取传递的参数。

示例代码如下:

import sys

param1 = sys.argv[1]
param2 = sys.argv[2]

print("param1:", param1)
print("param2:", param2)

2.2 使用命令行参数解析库

除了使用位置参数外,还可以使用一些命令行参数解析库来实现更加灵活的参数解析。常见的命令行参数解析库有argparse和click等。

2.2.1 使用argparse库

argparse是Python标准库中的一个命令行参数解析库,可以用来解析命令行参数,并生成相应的帮助文档。

示例代码如下:

import argparse

parser = argparse.ArgumentParser(description='Script description')
parser.add_argument('param1', help='Parameter 1')
parser.add_argument('param2', help='Parameter 2')

args = parser.parse_args()

print("param1:", args.param1)
print("param2:", args.param2)

在shell脚本中,可以通过以下方式调用Python脚本:

#!/bin/sh

python_script_path="path_to_python_script.py"
param1="value1"
param2="value2"

python $python_script_path $param1 $param2
2.2.2 使用click库

click是一个Python的第三方库,可以用来解析命令行参数,并生成相应的命令行界面。

示例代码如下:

import click

@click.command()
@click.argument('param1')
@click.argument('param2')
def main(param1, param2):
    print("param1:", param1)
    print("param2:", param2)

if __name__ == '__main__':
    main()

在shell脚本中,可以通过以下方式调用Python脚本:

#!/bin/sh

python_script_path="path_to_python_script.py"
param1="value1"
param2="value2"

python $python_script_path $param1 $param2

2.3 使用环境变量

除了使用位置参数和命令行参数解析库外,还可以使用环境变量来传递参数给Python脚本。

在shell脚本中,可以通过以下方式设置环境变量:

#!/bin/sh

export PARAM1="value1"
export PARAM2="value2"

python_script_path="path_to_python_script.py"

python $python_script_path

在Python脚本中,可以通过以下方式获取环境变量:

import os

param1 = os.getenv("PARAM1")
param2 = os.getenv("PARAM2")

print("param1:", param1)
print("param2:", param2)

3. 项目甘特图

gantt
    dateFormat  YYYY-MM-DD
    title 项目甘特图
    section 项目阶段
    需求调研:done, 2022-01-01, 2022-01-10
    设计开发:done, 2022-01-11, 2022-01-20
    测试:done, 2022-01-21