如何在运行 Python 脚本文件时传递参数

liftword2个月前 (03-17)技术文章7

在 Python 中,可以使用命令行参数为程序传递额外的信息。在操作系统的命令行运行 Python 脚本文件时,文件名称之后添加的参数称为命令行参数。可以根据需要使用这些命令行参数,比如根据不同的参数来执行不同的操作或配置。

「语法:」

python script_name.py arg1 arg2 ...

使用 sys.argv 传递参数

sys 模块是一个内置模块,它使我们能够使用一些变量和函数在任何平台上与 Python 解释器进行交互。为 Python 脚本文件传递命令行参数的方法之一是使用 sys.argv,它是在执行期间传递的所有参数的列表。

import sys
arguments = sys.argv
script_name = arguments[0]
other_arguments = arguments[1:]
print("脚本名称:", script_name)
j = 1
for i in arguments[1:]:
    if i != '':
        print(f"第{j}个参数:{i}")
        j +=1

import sys
n = len(sys.argv)
script_name = sys.argv[0]
print("脚本名称:", script_name)
for i in range(1,n):
    print(f"第{i}个参数:{sys.argv[i]}")

以上示例保存为脚本文件后,在系统命令行模式运行:

python 1.py a b c d

运行输出:
脚本名称: 1.py
第1个参数:a
第2个参数:b
第3个参数:c
第4个参数:d

使用 sys.argv 获取命令行参数列表,第一个参数arguments[0]是脚本的名称,之后的数据是传递给脚本的参数。

「实例:反转输出字符串」

字符串作为参数进行传递,输出反转后的字符串。

import sys
arg = sys.argv[1]
print(arg[::-1])
命令行运行:
python 1.py “abcdef”

输出:
fedcba

命令行参数错误处理

如果 Python 脚本需要参数,你运行脚本时没有在命令行传递参数将引发 IndexError 异常,我们可以使用 try-except 进行错误处理。

import sys
try:
    arg = sys.argv[1]
except IndexError:
    raise SystemExit(f"错误: {sys.argv[0]} 缺少参数 <反转字符串>")
print(arg[::-1])

在这里我们简要介绍了使用 sys.argv 来传递命令行参数,Python 命令行参数是不可控的,可能会出现多种错误。请注意,命令行参数始终会以字符串的形式传递,因此如果您需要使用其他数据类型,需要进行适当的转换。

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!

相关文章

Python 函数参数

1.函数基本参数#基本样例 函数参数的定义要和调用参数匹配,否则会报错 def fun01(a, b): print(a, b) if __name__ == '__main__':...

Python基础 - 函数的位置参数、关键字参数、默认参数

在 Python 中,调用函数可以按照函数的位置传递参数(位置参数),也可以按照参数的名称传递参数(关键字参数),函数的参数还可以在定义的时候指定默认值(默认参数)。此外,Python 还支持可变参数...

python之函数的参数详解

参数传递:1.不可变数据类型:数字number(含int、float、bool、complex)、字符串string、元组tuple。当不可变数据类型被当作函数的参数,传递的是值,函数体内改变值时实际...

真相!Python 默认值参数深度解析,从踩坑到精通的进阶秘籍

一、开发中遇到的问题问题 1:默认值参数为可变对象的陷阱在 Python 开发里,不少初学者会在默认值参数为可变对象时踩坑。比如,我们想定义一个函数,用于向列表中添加元素,代码如下:def add_t...

Python 函数之参数

定义一个函数非常简单,但是怎么定义一个函数,需要什么参数,怎么去调用却是我们需要去思考的问题。如同大多数语言一样(如 Java),Python 也提供了多种参数的设定(如:默认值参数、关键字参数、形参...

Python命令行参数解析模块argparse

前言以前 optparse 比较火,但是在python2.7版本后,官方不再维护这个模块,转而大力支持 argparse 。argparse 模块可以让人轻松编写用户友好的命令行接口。她可以从 sys...