利用Python脚本实现传递参数的三种方式分享

目录
  • 一、使用sys.argv的数组传入
  • 二、使用argparse包传入
  • 三、使用shell脚本的方式向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 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 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 -d' ' -f1)
RESULTS_fun2=$(echo $ALL_RESULTS | cut -d' ' -f2)
echo fun1方法的返回结果为:$RESULTS_fun1
echo fun2方法的返回结果为:$RESULTS_fun2

查看运行结果:

到此这篇关于利用Python脚本实现传递参数的三种方式分享的文章就介绍到这了,更多相关Python脚本传递参数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python中的脚本性能分析

    目录 python脚本性能分析 python性能分析技巧 1.分析一行代码 2.分析多行代码 3.代码块中的每一行代码进行时间分析 python脚本性能分析 首先使用cd进入需要测试的脚本文件对应的目录,然后再使用如下代码完成对脚本的性能测试. # enter the directory of document cd (file directory) # use pdb library for debuging python -m cProfile test.py 我们可以看到我们获取到了每一步

  • 四个Python操作Excel的常用脚本分享

    目录 一.安装openpyxl模块 二.加载库 三.创建文件和工作表 四.在工作表指定单元格写数据 五.设置单元格的颜色字体 六.在excel中写入表格 一.安装openpyxl模块 Python操作excel主要用到了openpyxl模块,按win+R打开cmd,在里面输入 pip3 install openpyxl 即可成功安装openpyxl模块. 二.加载库 接着加载库,并设置数据存放的文件夹. import os import random import openpyxl import

  • Python桌面文件清理脚本分享

    目录 需求 所以脚本需要具有以下功能 实现 目录结构 代码 需求 桌面临时文件较多时,直接删了不太放心,不删又显得很杂乱,故需要写一个脚本批量清理并备份这些鸡肋的文件. 所以脚本需要具有以下功能 1. 可以将桌面文件移动至指定文件夹(可配置). 2. 可以设置例外文件,比如桌面图标不需要移动,部分常用的文件也不需要移动. 3. 出现同名文件时,不能直接覆盖,需要加一个日期后缀予以区分.例如更名为 helloworld-2022-08-30.txt 本来准备按照文件后缀名分文件夹存放的,但毕竟是临

  • 分享十个Python提高工作效率的自动化脚本

    目录 01.解析和提取 HTML 02.二维码扫描仪 03.截图 04.创建有声读物 05.PDF 编辑器 06.迷你 Stackoverflow 07.自动化手机 08.监控 CPU/GPU 温度 09.Instagram 上传机器人 10.视频水印 在这个自动化时代,我们有很多重复无聊的工作要做. 想想这些你不再需要一次又一次地做的无聊的事情,让它自动化,让你的生活更轻松. 那么在本文中,我将向您介绍 10 个 Python 自动化脚本,以使你的工作更加自动化,生活更加轻松. 因此,没有更多

  • 23个很棒的Python脚本集合分享(迷你项目)

    目录 1.将 JSON 转换为 CSV 2.密码生成器 3.从多个文件中搜索字符串 4.从给定网页获取所有链接 5.图像水印 6.从网页抓取并下载所有图片 7.低电量通知 8.计算您的年龄 9.组织不同类别的下载文件夹 10.从CSV文件批量发送电子邮件 11.获取网站的IP地址和主机名 12.终端进度条 13.无线密码弹出器 14.给定网站的快照 15.将文件拆分为块 16.加密和解密文本 17.定期捕获屏幕截图 18.十进制到二进制转换器 19.CLI 待办事项应用程序 20.货币转换器 2

  • Python 自动备份脚本的示例代码

    目录 一.前言 二.代码 一.前言 之前因为疫情常常不知道会不会被封在家里,又不想把电脑带过来带过去,就做了这个自动备份的脚本. 功能如下: 自动从指定根目录里将找到的所有指定后缀名的文件备份到一个备份文件夹里: 将备份文件夹中的文件自动和阿里云盘同步: 原文件目录结构不会改变: 可以屏蔽根目录下一级中不想要的文件夹/文件,下多级的不行: 定时运行: 二.代码 创建了一个AutoTransfer类,这个类在初始化的时候会自动读取配置文件里的参数,如果没有配置文件也可以后续调用函数时来传参. 调用

  • 13个简便高效的Python脚本分享

    目录 1.使用 Python 进行速度测试 2.在谷歌上搜索 3.制作网络机器人 4.获取歌曲歌词 5.获取照片的Exif数据 6.提取图像中的 OCR 文本 7.将照片转换为Cartonize 8.清空回收站 9.Python 图像增强 10.获取 Window 版本 11.将 PDF 转换为图像 12.转换十六进制到 RGB 13.网站状态 每天我们都会面临许多需要高级编码的编程挑战.你不能用简单的 Python 基本语法来解决这些问题.在本文中,我将分享 13 个高级 Python 脚本,

  • 命令行运行Python脚本时传入参数的三种方式详解

    如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. python script.py 0,1,2 10 python script.py -gpus=0,1,2 --batch-size=10 python script.py -gpus=0,1,2 --batch_size=10 这三种格式对应不同的参数解析方式,分别为sys.argv, argparse, tf.app.run, 前两者是python自带的功能,最后一个是tensorfl

  • feign实现传递参数的三种方式小结

    需要注意的一点是,feign好像是无法传递list集合类型的,但是你可以通过传递对象类型,然后在接收方再次将对象装在集合中达到集合传递的效果 传递方式一:传递的都是基本数据类型 restful风格参数,用@PathVariable写着走就行了 传递方式二:传递数组类型的参数 不使用restful风格,直接用@RequestParam声明参数之间的对应关系. 传递方式三:传递带有对象的参数 1.使用restful风格的参数要用@Pathvarible声明参数对应关系,@Pathvariable用于

  • python解析命令行参数的三种方法详解

    这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法:sys.argv.argparse解析.getopt解析 方法一:sys.argv -- 命令行执行:python test_命令行传参.py 1,2,3 1000 # test_命令行传参.py import sys def para_input(): print(len(sys.argv)) #

  • JSP向后台传递参数的四种方式总结

    Jsp页面传值的方法 一.通过Form表单提交传值 客户端通过Form表单提交到服务器端,服务器端通过 Java代码 request.getParameter(String xx); 来取得参数(xx)为参数名称. 通过get/post方式进行提交 二.通过隐藏域传值 通过在表单中加入一个隐藏域来提交到服务器端,这种方式的好处是可以在客户端加入一些自己想要加入的参数,以便得到相应的值. 客户端代码: Java代码 <input type="hidden" name="i

  • 使用 Python 实现文件递归遍历的三种方式

    今天有个脚本需要遍历获取某指定文件夹下面的所有文件,我记得很早前也实现过文件遍历和目录遍历的功能,于是找来看一看,嘿,不看不知道,看了吓一跳,原来之前我竟然用了这么搓的实现. 先发出来看看: def getallfiles(dir): """遍历获取指定文件夹下面所有文件""" if os.path.isdir(dir): filelist = os.listdir(dir) for ret in filelist: filename = dir

  • Python Selenium 设置元素等待的三种方式

    Selenium 设置元素等待的三种方式 1. sleep 强制等待     2. implicitly_wait() 隐性等待     3. WebDriverWait()显示等待 三种方式的优缺点 1. sleep 强制等待 from selenium import webdriver from time import sleep driver = webdriver.Chrome() sleep(2) #设置等待2秒钟 driver.get('http://www.baidu.com')

  • python中requests模拟登录的三种方式(携带cookie/session进行请求网站)

    一,cookie和session的区别 cookie在客户的浏览器上,session存在服务器上 cookie是不安全的,且有失效时间 session是在cookie的基础上,服务端设置session时会向浏览器发送设置一个设置cookie的请求,这个cookie包括session的id当访问服务端时带上这个session_id就可以获取到用户保存在服务端对应的session 二,爬虫处理cookie和session 带上cookie和session的好处: 能够请求到登录后的界面 带上cook

  • Python tkinter模块中类继承的三种方式分析

    本文实例讲述了Python tkinter模块中类继承的三种方式.分享给大家供大家参考,具体如下: tkinter class继承有三种方式. 提醒注意这几种继承的运行方式 一.继承 object 1.铺tk.Frame给parent: 说明: self.rootframe = tk.Frame(parent) tk.Label(self.rootframe) import tkinter as tk class MyApp(object): def __init__(self, parent)

  • Action获取请求参数的三种方式

    方式一:Action本身作为Model对象,通过属性注入(Setter)方法讲参数数据封装到Action中 具体为:在Action中,提供和参数名相同的几个属性,并为其提供set方法,那么,该参数会被自动封装 到该几个属性中. 方式二:创建独立的Model对象,还是通过属性注入的方法将请求数据封装到Model对象中 具体为:另外创建一个专门的类,并在其中添加几个和请求参数名相同的属性,,此时,在表单中,需要讲参数名, 写成Model的一个具体对象名.参数名的方式,然后在Action中,需要定义一

  • vue-router传递参数的几种方式实例详解

    vue-router传递参数分为两大类 编程式的导航 router.push 声明式的导航 <router-link> 编程式的导航 router.push 编程式导航传递参数有两种类型:字符串.对象. 字符串 字符串的方式是直接将路由地址以字符串的方式来跳转,这种方式很简单但是不能传递参数: this.$router.push("home"); 对象 想要传递参数主要就是以对象的方式来写,分为两种方式:命名路由.查询参数,下面分别说明两种方式的用法和注意事项. 命名路由

随机推荐