Python杂谈 | (15) 使用Pycharm执行带命令行参数的脚本

给python脚本添加命令行参数主要有三种方式:argparse、Fire工具、sys.argv。

目录

1. argparse

2. Fire

3. sys.argv


1. argparse

import argparse

parser = argparse.ArgumentParser(description='Options')
parser.add_argument('-folds', default=9, type=int,
                    help="num of folds") #9折交叉验证

parser.add_argument('-bs', default=128, type=int,
                    help="batch size")

opt = parser.parse_args()

print(opt.folds)

上面的脚本如果直接在Pycharm中执行的话,会输出默认值default。

如果想传入新的参数值,一种方式是直接修改脚本中相应参数的default,比较暴力;另一种方式是从命令行传入新的参数值,可以直接打开命令行窗口,执行脚本 python a.py -folds=100。

还可以在Pycharm中,设置命令行参数,这样就可以在Pycharm集成环境中运行了,而且脚本使用的是新的参数:

点击右下角的apply即可,此时在Pycharm中运行脚本,就可以使用命令行参数了。

 

2. Fire

Fire工具的安装和使用,详情可以查看我的另一篇博客:Fire工具

简而言之,就是使用Fire工具后,在命令行执行脚本时,可以指定执行脚本中的某个函数,然后以字典的形式,给这个函数传递参数:

def predict(**kwargs):
    pass

命令行执行: 

python a.py predict --model FastText

上面的命令执行a.py中的predict函数,model参数使用的是FastText。

直接在Pycharm中执行a.py不会有结果,需要像之前一样,先设置参数,再使用Pycharm执行:

 

3. sys.argv

import sys

print(sys.argv[0]) #当前执行的脚本名称
print(sys.argv[1]) #脚本后跟的命令行参数
#...还可以添加多个命令行参数

可以在命令行执行该脚本,在后面添加参数。

如果直接在Pycharm中执行会报错,因为此时并没有argv[1]这个参数,访问越界。可以像之前一样,先设置参数,再使用Pycharm执行:

 

 

 

发布了405 篇原创文章 · 获赞 765 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/sdu_hao/article/details/104326116