很多深度学习项目采用shell文件保存命令行参数,并通过shell脚本来运行项目中的模型训练、测试等工作,但是在学习他人项目的过程中,直接在shell命令行运行脚本,不利于debug和学习代码的细节,此时,我们更希望在IDE(如Pycharm)中能以Debug的方式运行,直接在IDE中运行shell脚本的py文件会出错,提示命令行参数的用法,所以就要想办法快速绕过这一步,能够直接实现在IDE中运行,很容易想到直接在py文件中指定参数,但是使用
argparse
的
add_argument
方法手工将所有参数在py文件中重新定义一遍,不仅代码量多而且容易出错也不便于配置的更改,有没有更高效便捷的方式呢?有。
一个简单高效的方式是在第一次运行shell脚本时将命令行参数的解析结果保存在本地文件中,之后在IDE运行时,直接从本地文件加载参数即可,下面通过一段示例代码说明。
from argparse import ArgumentParser
import json
parser = ArgumentParser()
parse
问题很多深度学习项目采用shell文件保存命令行参数,并通过shell脚本来运行项目中的模型训练、测试等工作,但是在学习他人项目的过程中,直接在shell命令行运行脚本,不利于debug和学习代码的细节,此时,我们更希望在IDE(如Pycharm)中能以Debug的方式运行,直接在IDE中运行shell脚本的py文件会出错,提示命令行参数的用法,所以就要想办法快速绕过这一步,能够直接实现在IDE中运行,很容易想到直接在py文件中指定参数,但是使用argparse的add_argument方法手工将所有参数
可能缺少
参数
,或者按照一下方法更改属性:
p
arser
.add_
argume
nt('--model', default='ResNet18',required=True)
args = p
arser
.parse_args()
p
arser
.add_
argume
nt('--model', default='ResNet18')
args = p
arser
.parse_args()
Python
自定义
命令行参数
使用到的方法为
argparse
.
Argume
ntP
arser
() ,此模块有中文
文档
,建议链接 到官方中文
文档
中查看。
argparse
.
Argume
ntP
arser
()
此模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的
参数
,然后
argparse
将弄清如何从 sys.argv
解析
出那些
参数
。
argparse
模块还会自动生成帮助和使用手册「常见的-h」,并在用户给程序传入无效
参数
时报出错误信息。
1、创建一个
解析
器:
第一步:创建一个 Argum
p
arser
=
argparse
.
Argume
ntP
arser
(description='接收
参数
')
p
arser
.add_
argume
nt('n', help='姓名(必选)')
p
arser
.add_
argume
nt('-s', dest="ge.
2.1 创建
解析
器
使用
argparse
的第一步是创建一个
Argume
ntP
arser
对象。
Argume
ntP
arser
对象包含将命令行
解析
成
Python
数据类型所需的全部信息。
import
argparse
p
arser
=
argparse
.
Argume
ntP
arser
(description='Process some integers.')
2.2 添加
参数
给一个
Argume
ntP
arser
.
keras框架入门学习(一)——
argparse
传参模块调用
argparse
模块简介一、实现【
解析
命令行读取
参数
】的传统方法——sys.argv二、实现【
解析
命令行读取
参数
】的优化方法——
argparse
模块
argparse
模块使用方法
python
argparse
传入布尔
参数
的正确做法
argparse
模块简介
argparse
官方指导
文档
:https://docs.
python
.org/3/library/
argparse
.html
argparse
定义:
argparse
是
python
标准库里面用来处
# 1.创建解释器
p
arser
=
argparse
.
Argume
ntP
arser
(description="可写可不写,只是在
命令行参数
出现错误的时候,随着错误信息打印出来。")
# 2.添加需要的
参数
p
arser
.add_
argume
nt('-gf', '--girlfriend',
Python
argparse
模块详解
argparse
是一个用来
解析
命令行参数
的
Python
库,它是
Python
标准库的一部分。基于
python
2.7 的 stdlib
代码
。
argparse
模块使编写用户友好的命令行界面变得容易。程序定义了所需的
参数
,而
argparse
将找出如何从 sys.argv 中
解析
这些
参数
。
argparse
模块还会自动生成帮助和使用消息,并在用户为程序提供无效
参数
时发出错误。
简单实现圆柱体体积的计算
为了便于对
argparse
命令行参数
解析
模块的理解,我
然后出现>>>就可以写程序了
方式二:在cmd终端输入
python
进入
python
环境
然后写一个.py
文件
,再在终端跳入py
文件
的路径下
输入
python
hello_world.py即可
运行
。
在一些
IDE
里写,比如我用的
pycharm
英文原文地址:
https://docs.
python
.org/3.4/library/
argparse
.html#module-
argparse
https://docs.
python
.org/3.4/howto/
argparse
.html#id1
python
标准库模块
argparse
用于
解析
命令行参数
,编写用户友好的命令行界面,该模块还会自动生成帮助信息,并在所给
参数
无效时报错。
python
download.py --url https://abc.bcd.io/tiq.mp4
–url这个玩意儿就叫args。使用args可以不需要修改.py
文件
的
代码
就可以完成脚本配置。
在
python
中,最常见的args工具就是
argparse
。
直接看一段
代码
:
import
argparse
p
arser
=
argparse
.
Argume
ntP
arser
('demo', add_help=False)
p
arser
.ad
相信很多刚开始学习
深度学习
算法
代码
的小伙伴,在一开始总会遇到关于
argparse
模块的
代码
,网上关于这方面的文章有很多但新手入门往往不是那么容易。本文从一个计算圆柱体体积的实例出发,帮助大家理解关于
argparse
模块的一些常见用法。
点击查看官方参考
文档
argparse
模块是命令行选项、
参数
和子命令
解析
器。可以让人轻松编写用户友好的命令行接口。适用于
代码
需要频繁地修改
参数
的情况。
先看下面一段没有使用
argparse
的
代码
import math # 为了获取π
def cylinder
import
argparse
input_path = r'xx/xx/xx'
p
arser
=
argparse
.
Argume
ntP
arser
('what do tou want to do')
p
arser
.add_
argume
nt('--input_dir', type=str, default=input_path,help='the input folder of files')
args = p
arser
.parse_args()
function(args.input_dir)
#
加载
预训练模型和分词器
model = GPT2LMHeadModel.from_pretrained('uer/gpt2-chinese-cluecorpussmall')
tokenizer = GPT2Tokenizer.from_pretrained('uer/gpt2-chinese-cluecorpussmall')
# 对话循环
while True:
# 接收用户输入
text = input('我: ')
# 将用户输入添加到历史对话文本中
input_ids = tokenizer.encode(text + tokenizer.eos_token, return_tensors='pt')
# 生成回复
reply_ids = model.generate(
input_ids=input_ids,
max_length=50,
temperature=0.7,
pad_token_id=tokenizer.eos_token_id
# 将回复转换为文本
reply_text = tokenizer.decode(reply_ids[0])
# 输出回复
print('AI:', reply_text.strip())
这个
代码
与上面的
代码
相比,只是去掉了使用
argparse
模块传递
参数
的部分,其他逻辑都是一样的。
### 回答2:
如果要去掉
代码
中的
argparse
,首先需要了解
argparse
是一个用于命令行
解析
的
Python
模块,它可以简化
解析
命令行参数
的过程,帮助我们更加方便地处理命令行输入。
去掉
argparse
之后,我们就需要手动来处理
命令行参数
的
解析
。我们可以通过sys模块来获取
命令行参数
列表,然后根据
参数
的位置或者特定的规则进行
解析
。
以下是一个示例,演示如何去掉
argparse
来实现对
命令行参数
的
解析
:
```
python
import sys
def main():
# 获取
命令行参数
args = sys.argv[1:] # 去掉第一个
参数
,即脚本名
num1 = int(args[0]) # 假设第一个
参数
是一个整数
num2 = int(args[1]) # 假设第二个
参数
是一个整数
# 执行相应的操作
result = num1 + num2
# 输出结果
print("计算结果:", result)
if __name__ == "__main__":
main()
在这个示例中,我们使用sys模块的argv属性来获取
命令行参数
列表。sys.argv是一个包含
命令行参数
的列表,其中第一个
参数
是脚本的名称,后面的
参数
则是传入的
参数
值。
通过sys.argv[1:],我们去掉了脚本名称
参数
,然后根据位置获取了第一个和第二个
参数
,并假设它们都是整数。
然后我们可以根据需求进行相应的操作,这里我们简单地将两个数相加并输出结果。
需要注意的是,手动处理
命令行参数
解析
可能会更加繁琐并且容易出错,使用
argparse
等现成的工具可以更好地处理不同类型的
参数
,并提供更好的用户交互体验。
### 回答3:
如果要将
代码
中的
argparse
模块去掉,需要对
代码
进行一些修改。
argparse
是
Python
中用于
解析
命令行参数
的一个模块,它方便我们从命令行中获取输入的
参数
。
假设你的
代码
中使用了
argparse
来
解析
命令行参数
,并进行处理,那么去掉
argparse
的话,你将无法通过命令行输入
参数
,而需要以其他方式获取输入。下面是一个简单的示例修改方案:
原始
代码
(使用
argparse
):
import
argparse
def my_function(arg1, arg2):
# 处理函数逻辑
if __name__ == "__main__":
p
arser
=
argparse
.
Argume
ntP
arser
()
p
arser
.add_
argume
nt("arg1")
p
arser
.add_
argume
nt("arg2")
args = p
arser
.parse_args()
my_function(args.arg1, args.arg2)
修改后的
代码
(去掉
argparse
):
def my_function(arg1, arg2):
# 处理函数逻辑
if __name__ == "__main__":
# 以其他方式获取输入
参数
,如input()函数读取用户输入
arg1 = input("请输入arg1: ")
arg2 = input("请输入arg2: ")
my_function(arg1, arg2)
在修改后的
代码
中,我们使用了input()函数来获取用户输入的
参数
。当
代码
运行
到获取
参数
的部分时,程序会等待用户输入arg1和arg2的值。你可以根据实际情况修改获取
参数
的方式,如
从文件
中读取、从网络接口中获取等。这样,在
运行
代码
时,就不再需要在命令行中输入
参数
。
需要注意的是,在修改后的
代码
中,缺少了对
命令行参数
的校验、帮助信息和其他
argparse
提供的功能。如果你需要这些功能,可以选择其他替代
argparse
的
命令行参数
解析
库,如getopt等。