技术经验解读:使用python脚本传递参数:(三种方式可收藏)

简介: 技术经验解读:使用python脚本传递参数:(三种方式可收藏)

背景:使用python脚本传递参数在实际工作过程中还是比较常用,以下提供了好几种的实现方式:


一、使用sys.argv的数组传入


说明:使用sys.argv必须按照先后的顺序传入对应的参数;sys.argv则封装了传入的参数数据,作为数组的方式已经传入


import sys


print("传入参数的总长度为:", len(sys.argv))


print("type:", type(sys.argv))


print("function name:", sys.argv【0】)


try:


print("第一个传入的参数为:", sys.argv【1】)


print("第二个传入的参数为:", sys.argv【2】)


except Exception as e:


print("Input Error:", e)


通过命令行查看运行结果:


二、使用argparse包传入


说明:parser.add_argument 方法的type参数理论上可以是任何合法的类型,而且传入的顺序并没有要求


参数使用的说明:


--xx 完整参数输入


-x 简写参数输入


type 输入的参数将要被转换的数据类型


default 默认值


help 参数介绍


nargs 可传入的参数数量


required 是否为必须参数


import argparse


parser = argparse.ArgumentParser(description='argparse //代码效果参考:http://www.lyjsj.net.cn/wz/art_22782.html

testing')

parser.add_argument('--name','-n',type=str, default = "bk",required=True,help="a programmer's name")


parser.add_argument('--age','-a',type=int, default=35,help='age of the programmer')


parser.add_argument('--sex','-s',type=str, default='male')


parser.add_argument('--favorite','-f',type=str, nargs="+",required=False,help="favorite of the programmer")


args = parser.parse_args()


print(args.name)


print(args.age)


print(args.sex)


print(args.favorite)


查看运行结果:


1.使用完整参数输入


2.使用简写参数输入


3.多参数的传入


三、使用shell脚本的方式向python脚本传递参数


1.使用shell脚本向python脚本传递参数


python脚本依然使用sys.argv的数组的方式传入参数


原python如下:(python_test.py)


import sys


print("传入参数的总长度为:", len(sys.argv))


print("type:", type(sys.argv))


print("function name:", sys.argv【0】)


try:


print("第一个传入的参数为:", sys.argv【1】)


print("第二个传入的参数为:", sys.argv【2】)


except Exception as e:


print("Input Error:", e)


增加shell脚本如下:(shell_test.sh)


#!/bin/bash


#定义变量


para1=$1


para2=$2


python python_test.py $para1 $para2


查看运行结果:


2.使用shell脚本向python脚本内的方法传递参数


python脚本如下:(python_test.py)


def fun1():


return "无参数方法fun1"


def fun2(x):


return f"有参数方法fun2且传入的参数为{x}"


shell脚本如下:(shell_test.sh)


(1)无参数方式调用:


#!/bin/bash


#定义变量


python -c 'import //代码效果参考:http://www.lyjsj.net.cn/wz/art_22780.html

python_test;print(python_test.fun1())'

查看运行结果:


(2)有参数方式调用


#!/bin/bash


#定义变量


para=$1


python -c "import python_test;print(python_test.fun2('${para}'))"


查看运行结果:


(3)一次调用所有方法,放入一个集合中,再调用切割方法获取相应的值


#!/bin/bash


#定义变量


para=$1


#将结果保存为一个变量ALL_RESULTS内


ALL_RESULTS=$(python -c "import python_test;print(python_test.fun1(),python_test.fun2('${para}'))")


#分别打印第一个方法的返回与第二个方法的返回


RESULTS_fun1=$(echo $ALL_RESULTS | cut //代码效果参考:http://www.lyjsj.net.cn/wz/art_22778.html

-d' ' -f1)

RESULTS_fun2=$(echo $ALL_RESULTS | cut -d' ' -f2)


echo fun1方法的返回结果为:$RESULTS_fun1


echo fun2方法的返回结果为:$RESULTS_fun2


查看运行结果:


原地址:

相关文章
|
2天前
|
JSON 数据可视化 API
技术心得:如何用Python和API收集与分析网络数据?
技术心得:如何用Python和API收集与分析网络数据?
10 2
|
2天前
|
存储 缓存 网络协议
技术笔记:python使用memcached
技术笔记:python使用memcached
|
3天前
|
Python
技术经验解读:【Python】torrentParser1.04增加获得磁力链URI功能
技术经验解读:【Python】torrentParser1.04增加获得磁力链URI功能
|
3天前
|
Python
技术心得记录:分分钟学会一门语言之Python3篇【转载】
技术心得记录:分分钟学会一门语言之Python3篇【转载】
|
3天前
|
文字识别 API C++
技术好文共享:编写Tesseract的Python扩展
技术好文共享:编写Tesseract的Python扩展
|
3天前
|
程序员 API 计算机视觉
技术经验解读:【python自动化】02.pywin32库自动操作键鼠(保姆级代码注释)
技术经验解读:【python自动化】02.pywin32库自动操作键鼠(保姆级代码注释)
|
8天前
|
机器学习/深度学习 人工智能 前端开发
Python中的模块化编程
【6月更文挑战第17天】Python模块化编程与软件架构设计的关键在于拆分任务到独立模块,提高代码的可维护性、可重用性和可扩展性。例如,学生管理系统可分解为录入、查询和删除模块。MVC和MVVM架构模式有助于组织代码,而微服务和函数式编程将在未来发展中扮演重要角色。通过示例代码,读者能学习如何实现这些概念,提升项目开发效率和质量。
155 57
|
15天前
|
测试技术 虚拟化 云计算
GitHub高赞!速通Python编程基础手册,被玩出花了!
随着云时代的来临,Python 语言越来越被程序开发人员喜欢和使用,因为其不仅简单易学,而且还有丰富的第三方程序库和相应完善的管理工具。 从命令行脚本程序到 GUI程序,从图形技术到科学计算,从软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有 Python 的身影。 今天给小伙伴们分享的这份手册采用以任务为导向的编写模式,全面地介绍了 Python 编程基础及其相关知识的应用,讲解了如何利用 Python 的知识解决部分实际问题。
GitHub高赞!速通Python编程基础手册,被玩出花了!
|
4天前
|
数据挖掘 数据处理 Python
Python编程入门:从基础到实践
【6月更文挑战第26天】这篇文章引导读者逐步学习Python编程,从基础语法如变量、数据类型(整数、浮点数、字符串)到条件语句、循环(if/for/while),再到函数定义和模块导入。通过实例展示了Python在文本处理、数据分析(使用pandas)和Web开发(使用Flask)的应用。学习Python能为初学者开启更广阔的技术领域,如面向对象编程、并发和网络编程等。
|
2天前
|
设计模式 程序员 测试技术
老程序员分享:Python数据模型及Pythonic编程
老程序员分享:Python数据模型及Pythonic编程
13 1