python 从命令行 外部传入参数 sys.argv [ ] 与parser.add_argument ( ) 的用法

参考自: python中sys.argv[]的用法.

1. sys.argv [ ] 的用法

sys.argv [ ] 说白了就是一个从程序外部获取参数的桥梁。因为从外部取得的参数可以是多个,所以获得的是一个列表( list ),也就是说sys.argv 其实可以看作是一个列表,所以才能用 [ ] 提取其中的元素。其第一个元素是程序本身,随后才依次是外部给予的参数。

下面我们通过一个极简单的 test.py 程序的运行结果来说明它的用法。

 #test.py
 import sys
 a=sys.argv[0]
 print(a)

将test.py保存在c盘的根目录下。

在程序中找到 ‘运行’->点击->输入"cmd"->回车键 进入控制台命令窗口(如下图),先输入cd c:\ (作用是将命令路径改到c盘根目录),然后输入test.py运行我们刚刚写的程序:

得到的结果是C:\test.py,这就是 0指代码本身(即此 .py程序)本身的意思。

然后我们将代码中0改为1 :

a=sys.argv[1]

保存后,再从控制台窗口运行,这次我们加上一个参数,输入:test.py what

得到的结果就是我们输入的参数what,看到这里你是不是开始明白了呢。

那我们再把代码修改一下:

a=sys.argv[2:]

保存后,再从控制台窗台运行程序,这次多加几个参数,以空格隔开:

test.py a b c d e f

得到的结果为[‘b’, ’c’, ’d’, ’e’, ’f’]

总结:sys.argv [ ] 其实就是一个列表,里边的项为用户输入的参数,关键就是要明白这参数是从程序外部输入的,而非代码本身的什么地方,从外部来运行程序并给出参数。

2. sys.arg [ ]与parser.add_argument ( ) 配合使用

了解了的sys.arg [ ] 的用法,其实我们也可以不用每次运行前都带上参数,或者每次打开 pycharm 的时候都要配置参数。也可以写在程序里,这就用到了系统预置的argparse包,

具体步骤:
1、新建一个test_main.py文件,并导入argparse和sys包。

2、定义一个参数传递函数:

def parse_arguments(argv):
    parser = argparse.ArgumentParser()
    parser.add_argument('--name',type = str , default = 'Tom' )
    parser.add_argument('--age',  default='14')
    return parser.parse_args(argv)

parser.add_argument(’–名字’,type = str , default= ‘值’ )的用法:相当于传了一个字典类型的数据

–名字:字典的key。

值:字典的值

另外,parser.add_argument还有几个常用的属性:

1)type =str,默认为str,也可以指定为float int等类型

2)help:用于显示模块的信息(相当于注释。),当在命令行输入python **.py --help时,可以显示对应的信息。

比如,加上help属性:

在命令行运行上述命令,显示:

3、定义一个主函数调用上述函数,并写好主函数的入口:

def main(args):
    print(args.name)
    print(args.age)
 
if __name__ == '__main__':
    main(parse_arguments(sys.argv[1:]))

最终代码如下:

import sys
import argparse

def parse_argument(argv):
	""" 参数传递函数 """
	parser = argparse.ArgumentParser()
	parser.add_argument('--name',type=str, default='Tom',help='这保存的是姓名信息')
	parser.add_argument('--age',default='18',help='这保存的是年龄信息')
	return parser.parse_args(argv)

def main(args):
	print(args.name)
	print(args.age)

if __name__ == '__main__':
	main(parse_argument(sys.argv[1:]))

运行这个程序:

D:\software_install_position\anaconda3\envs\tf_1_13_1_py376\python.exe F:/Python_Code/sys_arg_note/sys_arg_test_main.py
Tom
18

Process finished with exit code 0

证明我们添加的两个参数已经在运行的时候被导入了进去。(此时给的参数是默认的 default)

参考:

python中sys.argv[]的用法.

全部评论

相关推荐

行云流水1971:这份实习简历的优化建议: 结构清晰化:拆分 “校园经历”“实习经历” 板块(当前内容混杂),按 “实习→校园→技能” 逻辑排版,求职意向明确为具体岗位(如 “市场 / 运营实习生”)。 经历具象化:现有描述偏流程,需补充 “动作 + 数据”,比如校园活动 “负责宣传” 可加 “运营公众号发布 5 篇推文,阅读量超 2000+,带动 300 + 人参与”;实习内容补充 “协助完成 XX 任务,效率提升 X%”。 岗位匹配度:锚定目标岗位能力,比如申请运营岗,突出 “内容编辑、活动执行” 相关动作;申请市场岗,强化 “资源对接、数据统计” 细节。 信息精简:删减冗余表述(如重复的 “负责”),用短句分点,比如 “策划校园招聘会:联系 10 + 企业,组织 200 + 学生参与,到场率达 85%”。 技能落地:将 “Office、PS” 绑定经历,比如 “用 Excel 整理活动数据,输出 3 份分析表;用 PS 设计 2 张活动海报”,避免技能单独罗列。 优化后需强化 “经历 - 能力 - 岗位需求” 的关联,让实习 / 校园经历的价值更直观。 若需要进一步优化服务,私信
实习,投递多份简历没人回...
点赞 评论 收藏
分享
2025-12-24 15:25
已编辑
门头沟学院 前端工程师
是腾讯的csig腾讯云,前天晚上九点突然打电话约面,激动的通宵学了一晚上,第二天状态很差改了今天(以后再也不通宵学习了)感觉自己浪费了面试官一个半小时单纯手写+场景,无八股无项目无算法,打击真的很大,全是在面试官提醒的情况下完成的,自己技术方面真的还是有待提高,实力匹配不上大厂和已经面试的两个公司完全不一样,很注重编码能力和解决问题的能力,然而我这两个方面都很薄弱,面试官人很好很耐心的等我写完题目,遇到瓶颈也会提醒我,写不出题也会很耐心的跟我讲解好感动,到最后面试结束还安慰我打算把下周最后一场面试面完之后就不面啦,如果能去实习还是很开心,但是最重要的还是好好努力提高技术以下是面经第一题// 实现一个解析 url 参数的函数function parseUrl(urlStr) {// TODO}parseUrl('*********************************************');// 返回 {a: 1, b: 2, c: 3}追问:在链接里见过什么部分?用 hash 路由的话放在哪第二题// 考虑有一个异步任务要执行,返回 Promise,这个任务可能会失败,请实现 retry 方法,返回新方法,可以在失败后自动重试指定的次数。/*** 异步任务重试* @param task 要执行的异步任务* @param times 需要重试的次数,默认为 3 次*/function retry(task, times = 3) {// TODO: 请实现}// ---------------测试示例 ----------------// 原方法const request = async (data) => {// 模拟失败if (Math.random() < 0.7) {throw new Error('request failed');}const res = await fetch('https://jsonplaceholder.typicode.com/posts', {method: 'POST',body: JSON.stringify(data),});return res.json();}// 新的方法const requestWithRetry = retry(request);// 使用async function run() {const res = await requestWithRetry({ body: 'content' });console.log(res);}run();第三题就是给 retry 函数添加类型注释,用到泛型第四题:在组件库中将 Alert 用 api 的形式实现(应该就是 message 这个组件)怎么渲染到一个浮层里而不是原地渲染出来
不知道怎么取名字_:技术这个东西,太杂了,而且要下功夫的
查看5道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务