命令行运行Python脚本时传入参数--3种方法

方法1. 在命令行运行Python脚本时,传入参数,并根据参数做相应动作。

先来一个简单的---把命令行输入的参数打印出来。

Step1:  在linux中,建立名字为 t1.py 的python 脚本。t1.py 里面内容如下:

import argparse
if __name__ == "__main__":
  parser = argparse.ArgumentParser()
  parser.add_argument('--aa', type=str, default = None)
  parser.add_argument('--bb', type=int, default=32)
  args = parser.parse_args()
  print(args.aa)
  print(args.bb)

Step2: 在terminal中输入  python   t1.py   --aa=15  --bb=10

python   t1.py   --aa=15  --bb=10

结果如下: aa, bb都能正确打印。

再升级一下:

新建一个t2.py, 内容如下:

import argparse
if __name__ == "__main__":
  parser = argparse.ArgumentParser()
  parser.add_argument('--aa', type=str, default = None)
  parser.add_argument('--bb', type=int, default=32)
  args = parser.parse_args()
  if(args.bb==3):
    print(f'hello world, args.bb={args.bb}')
  else:
    print(f'sorry, args.bb is not 3, but ={args.bb}')

分别输入下面两条命令,看一下效果:

命令:

 python t2.py --aa=15 --bb=3
 python t2.py --aa=15 --bb=10

效果:

方法2. 使用sys.argv

Step1: 新建 script.py 这个文件,内容如下:

import sys
gpus = sys.argv[1]
batch_size = sys.argv[2]
print(gpus)
print(batch_size)

Step2: 命令行输入如下命令  

python     script.py    0,1,2    10

效果如下:

方法3.其他:把运行的python脚本名字打印出来。

Step1:将下面代码命名为t1.py

import sys
print(sys.argv[0])

Step2: 在terminal 下输入 python   t1.py

 会显示t1.py

再试验更多参数:

命令: python 4_sys_argv.py 1 2 3

其中4_sys_argv.py 内容如下:

import sys
print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])
print(sys.argv[3])

结果:

如果出现下面错误:

Traceback (most recent call last):
  File "1_sys_arg.py", line 3, in <module>
    print(sys.argv[1])
IndexError: list index out of range

解决办法:

代码格式问题,每行结尾部分删除掉多余内容;

参考: IndexError: list index out of range 错误原理及解决方法(python)_于科技人文间徘徊的博客-CSDN博客

Thanks to:

向python脚本传递参数_chengxuyuanyonghu的博客-CSDN博客_python 参数传递

命令行运行Python脚本时传入参数的三种方式_Daniel2333的博客-CSDN博客_python 命令行传参

  • 31
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在使用 Python argparse 模块处理命令行参数,如果不传入参数值,可以使用默认值。在定义参数,使用 add_argument() 方法并指定参数名称和默认值即可。 示例代码: ``` import argparse parser = argparse.ArgumentParser() parser.add_argument("--name", default="default_name") args = parser.parse_args() print(args.name) ``` 上面这段代码中,我们定义了一个叫做 --name 的参数,默认值为 "default_name"。如果在运行程序传入 --name 参数,那么 args.name 就会取默认值 "default_name"。 如果你不传参数也不给默认值,会在程序中抛出异常,提示该参数是必须的 ### 回答2: 在使用Python的argparse模块,如果某个参数不需要传入具体的值,可以在定义命令行参数将其设置为无需参数的选项。比如定义一个名为"--debug"的选项,表示是否启用调试模式,可以这样写: ```python import argparse parser = argparse.ArgumentParser() parser.add_argument("--debug", action="store_true", help="启用调试模式") args = parser.parse_args() if args.debug: print("启用了调试模式") else: print("未启用调试模式") ``` 在上述代码中,"--debug"选项不需要传入具体的值,通过设置`action="store_true"`,表示如果指定了"--debug"选项,则将args.debug的值设置为True,否则为False。 运行可以这样执行该脚本: ```bash python script.py --debug ``` 这样会输出"启用了调试模式";如果不指定"--debug"选项,则会输出"未启用调试模式"。 所以,如果某个参数不需要传入具体的值,可以使用`action="store_true"`来定义无需参数的选项。 ### 回答3: 在Python中,argparse是一个用于解析命令行参数和选项的模块。当不传入参数,可以使用argparse的默认参数来处理。 首先,我们需要导入argparse模块: ``` import argparse ``` 接下来,我们可以创建一个argparse对象`parser`: ``` parser = argparse.ArgumentParser() ``` 然后,我们可以使用`add_argument()`方法添加命令行参数和选项。如果不传入参数值,可以将`nargs`参数设置为"?"来指定该参数为可选参数,并设置`default`参数来定义该参数的默认值。例如: ``` parser.add_argument("-n", "--name", nargs="?", default="World", help="Enter your name") ``` 上述代码中,"-n"和"--name"是该参数的两个名字。通过设置`nargs="?"`,该参数将变成可选参数。默认情况下,该参数的值将设置为"World"。同,通过`help`参数,我们可以为该参数添加帮助信息。 最后,我们可以调用`parse_args()`方法解析命令行参数: ``` args = parser.parse_args() ``` 现在,我们可以使用`args`变量获取命令行参数的值。例如,我们可以通过`args.name`来获取名字参数的值: ``` name = args.name ``` 总结起来,当不传入参数,可以使用argparse的默认参数来处理。我们可以将参数设置为可选参数,并为其设置默认值,以便在不传入参数使用它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值