Python中 命令行参数传递 与 处理

命令行参数处理和传递(C/C++) 在C/C++中,使用int argc和char* argv[]来处理和传递命令行参数。其中,argc表示命令行参数的数量,而argv是一个指针数组,用来存储每个命令行参数的字符串。在实际应用中,我们可以根据具体的需求来解析和处理命令行参数。常见的做法是使用命令行参数来指定程序的运行模式、文件路径、调试选项等。通过使用这两个参数,我们可以使程序更加灵活和可配置,并根据不同的需求来动态地传递数据和选项。存储的是程序的名称或路径,而后续的参数则依次存储在。,并打印出每个参数的索引和对应的字符串。 阅读详情

英文原文: http://www.artima.com/weblogs/viewpost.jsp?thread=4829

   很多人会在  if __name__ == "__main__":  中写N多行的代码。 一般情况这是没问题的。 但如果你需要以命令行的方式运行调试, 那么就不方便了。

 

   而这个文章中像C一样定义了一个main()函数, 在  if __name__ == "__main__": 中只有一行 main() 调用, 很好的代码结构!

  而且还有一个好处:你可以通过修改main()的调用参数,达到随意修改命令行参数的目的。

 

First, we change main() to take an optional 'argv' argument, which allows us to call it from the interactive Python prompt:

def main(argv=None):
    if argv is None:
        argv = sys.argv
    # etc., replacing sys.argv with argv in the getopt() call.
 首先, 让main()接受默认参数, 然后在main()里头判断, 如果没有给main参数的话,就是用sys.argv作为参数。
 

Note that we fill in the default for argv dynamically. This is more flexible than writing

def main(argv=sys.argv):
    # etc.

because sys.argv might have been changed by the time the call is made; the default argument is calculated at the time the main() function is defined, for all times.

  而这种方法更灵活! 因为在main()内部引用 sys.argv参数时, sys.argv参数可能在调用main()前被我们自己的代码修改过了。 而main(argv=sys.argv)的定义方式, 保证了传给main()的默认参数一定是执行该脚本文件时给的参数!!! 因为Python函数的默认参数是在'编译'阶段就确定了,在运行过程中是不会被修改的。

 

 

 ====== 下面与译文无关, 只是一个练习: =====

下面是从 http://blog.sina.com.cn/s/blog_71c19c620100r7mk.html   上摘抄的:

使用getopt模块处理Unix模式的命令行选项:

getopt模块用于抽出命令行选项和参数,也就是sys.argv。命令行选项使得程序的参数更加灵活。支持短选项模式和长选项模式。
    # scriptname.py

    import getopt

    shortargs = 'f:t'
    longargs = ['directory-prefix=', 'format', '--f_long=']
    opts, args = getopt.getopt( sys.argv[1:], shortargs, longargs )


getopt函数的格式是getopt.getopt ( [命令行参数列表], "短选项", [长选项列表] )
短选项名后的冒号(:)表示该选项必须有附加的参数。                    
长选项名后的等号(=)表示该选项必须有附加的参数。
返回opts和args。
opts是一个参数选项及其value的元组( ( '-f', 'hello'), ( '-t', '' ), ( '--format', '' ), ( '--directory-prefix', '/home' ) )
args是一个除去有用参数外其他的命令行输入 ( 'a', 'b' )

然后遍历opts便可以获取所有的命令行选项及其对应参数了。
    for opt, val in opts:
        if opt in ( '-f', '--f_long' ):
            pass

 

对上边的片段, 我整理了一个例子:bell@bell-desktop:/tmp$ cat py_optParse.py
import sys
import getopt

shortargs = 'f:t'
longargs = ['directory-prefix=', 'format', '--f_long=']                        

 # 这时要求长选项参数名字为: ----f_long

 #如果执行python py_optParse.py --f_long  a.txt   那么出错: option --f_long not recognized

 

opts, args = getopt.getopt( sys.argv[1:], shortargs, longargs )

print "opts:", opts
print "args:", args

class Usage(Exception):
   def __init__(self, msg):
     self.msg = msg

 

parameter_missing = True

for opt, val in opts:
    #if opt in ( '-f', '--f_long' ):
    if opt in ( '-f', '----f_long' ):
        parameter_missing = False

if(parameter_missing):
   raise Usage("missing argument!")


bell@bell-desktop:/tmp$ python py_optParse.py -f a.txt
opts: [('-f', 'a.txt')]
args: []
bell@bell-desktop:/tmp$ python py_optParse.py --f_long a.txt
Traceback (most recent call last):
  File "py_optParse.py", line 6, in <module>
    opts, args = getopt.getopt( sys.argv[1:], shortargs, longargs )
  File "/usr/lib/python2.6/getopt.py", line 89, in getopt
    opts, args = do_longs(opts, args[0][2:], longopts, args[1:])
  File "/usr/lib/python2.6/getopt.py", line 153, in do_longs
    has_arg, opt = long_has_args(opt, longopts)
  File "/usr/lib/python2.6/getopt.py", line 170, in long_has_args
    raise GetoptError('option --%s not recognized' % opt, opt)
getopt.GetoptError: option --f_long not recognized
bell@bell-desktop:/tmp$ python py_optParse.py ----f_long a.txt
opts: [('----f_long', 'a.txt')]
args: []
Traceback (most recent call last):
  File "py_optParse.py", line 24, in <module>
    raise Usage("missing argument!")
__main__.Usage
bell@bell-desktop:/tmp$

 

命令行参数及其在编程中的应用 通过命令行参数,我们可以方便地在程序运行时传递数据、配置选项和参数值,使得程序更加灵活和可定制。不同的编程语言可能有不同的方式来处理命令行参数,但基本的概念和原理是相似的。它们提供了一种在程序运行时动态传递数据和配置选项的方式,使得程序的行为可以根据不同的输入进行定制。在本文中,我们将探讨命令行参数的概念以及如何在编程中使用它们。通过命令行参数,我们可以在执行脚本时指定源文件和目标位置,并将源文件复制到指定的目录中。首先,让我们考虑一个简单的例子,编写一个脚本程序,计算两个数的和。在上述示例中,我们检查。 阅读详情

相关推荐

晶圆表面缺陷检测现状概述

凹坑,凸起,尖角,沟槽),使用光束对晶圆进行照射,收集反射光和散射光信息进行缺陷判断,进一步可分为无图案晶圆表面检测和宏观缺陷检测设备。KLA使用SR-DUV光,检测精度在10nm以下。扫描电子显微(电子束和晶圆表面产生二次电子,X射线等)获取高分辨率的图像,然后用图像处理表面缺陷(凹坑,凸起,尖角,沟槽等)表面容貌和材料信息,分辨率可达5-10nm。晶圆表面缺陷检测设备主要检测晶圆外观呈现出来的缺陷,损伤、毛刺等缺陷,主要设备供应商KLA,AMAT,日立等,其中KLA在晶圆表面检测设备占有市场52%左右。

qq_36786800的博客 1万+

Python 命令行参数

sys模块:This module provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter.这个模块可供访问由解释器使用或维护的变量和与解释器进行交互的函数。 sys.argv 命令行参数

程序员的养成之路 763

第四届“网鼎杯”网络安全大赛 - 青龙组

第四届“网鼎杯”网络安全大赛 - 青龙组

lpppp小公主的博客 1313

【JavaSE专栏34】Java 函数命令行传参

本文讲解了 Java 中函数命令行传参的语法和使用场景,并给出了样例代码。

Designer 小郑的技术博客 1836

Android存储方案对比(SharedPreferences 、 MMKV 、 DataStore)

简介:本文介绍了Android开发中常用的键值对存储方案,包括SharedPreferences、MMKV和DataStore,并且对比了它们在性能、并发处理、易用性和稳定性上的特点。通过实际代码示例,帮助开发者根据项目需求选择最适合的存储方案,提升应用性能和用户体验。

LiuYong_01的博客 1793

boost::circular_buffer缓行缓冲区

1、circular_buffer实现了一个环形缓冲区,空间大小是固定的,当到达容器末尾时,将自动利用容器另一端的位置空间。 2、当程序需要容纳大量的元素,但多数情况下仅保存较少数量元素时可以使用circular_buffer_space_optimized,他可以有效的减少内存的占用,提高程序的运行效率。 3、主要接口: 4、实现一个生产者---消费者模式示例: #inc...

小米的修行之路 792

命令行参数传递(命令行解析)

通过命令行参数,用户可以在每次运行程序时改变程序的行为,而不需要修改代码。:命令行参数使得脚本和程序更容易被自动化工具、批处理文件或其他脚本调用,并传递不同的参数。:对于一些简单的程序或任务,使用命令行参数可能比创建和读取配置文件更为直观和简单。:使用像argparse这样的库,你可以为每个参数提供描述,从而当用户需要帮助时,他们可以直接在命令行中获得参数的信息。:命令行参数在不同的操作系统和环境中都有一致的概念和行为,这增加了代码的可移植性。

m0_55196097的博客 972

使用 PLS 回归进行近红外光谱的异常值检测

在光谱数据中,并非每个数据点都是有效的,因此,在构建模型时找到与大部分数据不符合的数据点是一种必要的操作。这些数据我们称之为。在这篇文章中,我们将使用PLS回归进行红外光谱数据的异常值检测。

qq_44204759的博客 1424

python getopt参数参数自动补全_在python脚本中解析命令行参数(getopt woes)

你得到答案了吗?调试python异常的一种方法是将代码从try块中移出(或临时复制以进行调试)。你会得到完整的线索。当然,另一种方法是减少测试用例。在这里,我将问题简化为三行,并尝试了@s.lott暗示的解决方案(在getopts调用中使用“f:”),最后还展示了使用一些不同的测试数据调用的行为:$ cat x1.pyimport sys, getoptopts, args = getopt.ge...

weixin_39788986的博客 445

245. 项目195:简易文字冒险游戏——《跟老吕学Python·新手》

如果您在学习本专栏教程时遇到任何问题,或有任何技术交流的意愿,欢迎在文章评论区留言,或通过优快云私信与老吕取得联系。老吕将及时回复您的留言,并与您共同探讨,以期为大家提供更为精准和有效的帮助。老吕珍视每一位读者的反馈和支持,期待与您共同学习、共同进步,共同创造美好的未来!我们的目标是不仅教会您Python语言,更是培养您解决问题的思维方式。请随意翻阅,按照自己的节奏学习,让这本专栏成为您编程旅程中的可靠伙伴。开发一个简易的文字冒险游戏,通过文本描述场景和事件,让玩家通过选择不同的选项来推动故事发展。

Python老吕的博客 712

6、核函数与再生核希尔伯特空间:原理、应用与实践

本文系统介绍了核函数与再生核希尔伯特空间(RKHS)的理论基础、核心性质及其在机器学习和信号处理中的广泛应用。文章从核方法的优势出发,阐述了其在非线性建模、正则化和算法核化方面的独特价值,并深入探讨了正定核、Mercer定理、表示定理等关键理论。通过构建多种标准核与工程专用核,展示了核函数的设计灵活性。结合支持向量回归(SVR)模型与多个MATLAB示例,详细说明了核方法的实际应用流程与操作技巧。最后,总结了核方法的应用领域、未来发展方向及学习实践建议,为读者提供了一套完整的理论与实践指南。

z2a3b4c5d的博客 145

python命令行参数传递_Python中 命令行参数传递 与 处理

英文原文: http://www.artima.com/weblogs/viewpost.jsp?thread=4829很多人会在 if __name__ == "__main__": 中写N多行的代码。 一般情况这是没问题的。 但如果你需要以命令行的方式运行调试, 那么就不方便了。而这个文章中像C一样定义了一个main()函数, 在 if __name__ == "__main__": 中...

weixin_39673303的博客 423

【Matlab】飞行器气动弹性仿真与分析

气动弹性是飞行器设计领域的核心交叉学科,融合了空气动力学、结构动力学和控制理论,主要研究飞行器结构在气动力作用下的弹性变形、振动响应及相互耦合规律,直接影响飞行器的飞行稳定性、操纵性和结构安全性。随着飞行器向高速度、高机动性、轻量化方向发展,气动弹性问题愈发突出,如颤振、发散、嗡鸣等现象,严重时会导致飞行器结构破坏甚至飞行事故,因此气动弹性仿真与分析已成为飞行器设计、验证和优化的关键环节。当前,飞行器气动弹性仿真面临诸多技术挑战:气动力与结构变形的强耦合特性难以精准描述,易出现仿真误差;

unber的博客 233

Python获取命令行参数的方法 import sys

0.sys 模块 在 Python 中,sys 模块是一个非常常用且十分重要的模块,通过模块中的 sys.argv 就可以访问到所有的命令行参数,它的返回值是包含所有命令行参数的列表(list). 参数个数: len(sys.argv) 脚本名: sys.argv[0] 参数1: sys.argv[1] 参数2: sys.argv[2] 通过程序来说明它的用法: 1.不传递参数时 import sys if __name__ == '__main__': print(len(sys.a..

凝眸伏笔的博客 1878

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

python命令行参数传递

Xpath定位是从1 开始的

dandanfengyun的博客 1474

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

python 命令行参数-Python命令行参数处理

sys模块sys模块代表了Python解释器,主要用于获取和Python解释器相关的信息,其中 sys.argv 可以获取命令行参数在Python交互式解释器中可以先导入sys模块 import sys,再输入 dir(sys) 查看sys模块所包含的全部程序单元(包括变量、函数等),或者 [i for i in dir(sys) if not i.startswith('_')] 过滤掉隐藏的单...

weixin_37988176的博客 1956

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

命令行参数

一直没有理解什么是命令行参数,今天才搞懂 我们运行python程序时,在cmd输入python test.py 运行,其实后面可以输入一系类参数来发告知程序怎么运行 比如这样的:python test.py arg1 arg2 arg3 其实我们接触过这个:pip install XXX 来安装某个包 命令行的参数以空格隔开。 python test.py arg1 arg2 arg3 ...

weixin_41425956的博客 300

shell调用python脚本,并且向python脚本传递参数

shell中: python test.py $para1 $para2 python中: def main($canshu1, $canshu2)   ..... main(sys.argv[1], sys.argv[2])

rockly89的博客 2万+

python 命令行参数-Python3之命令行参数处理

tocsys模块sys模块代表了Python解释器,主要用于获取和Python解释器相关的信息,其中 sys.argv 可以获取命令行参数在Python交互式解释器中可以先导入sys模块 import sys,再输入 dir(sys) 查看sys模块所包含的全部程序单元(包括变量、函数等),或者 [i for i in dir(sys) if not i.startswith('_')] 过滤掉隐...

weixin_37988176的博客 435

python命令行输入参数_Python命令行参数处理

sys模块sys模块代表了Python解释器,主要用于获取和Python解释器相关的信息,其中 sys.argv 可以获取命令行参数在Python交互式解释器中可以先导入sys模块 import sys,再输入 dir(sys) 查看sys模块所包含的全部程序单元(包括变量、函数等),或者 [i for i in dir(sys) if not i.startswith('_')] 过滤掉隐藏的单...

weixin_39985842的博客 1388

Python - 命令行参数

Python命令行参数提供了在运行程序时接收外部输入的方式。通过sys.argv可获取命令行参数列表,其中sys.argv[0]为脚本名。Python提供getopt和argparse模块来解析参数:getopt采用类似C语言的选项解析方式;argparse则更强大,支持参数类型检查、默认值设置、可选参数以及参数选择限制等功能。使用这些模块可以构建灵活的命令行接口,自动生成帮助信息并验证参数有效性。通过合理设计命令行参数,能提高Python脚本的交互性和可用性。

路漫漫其修远兮,吾将上下而求索 1357

c传字符串给python_如何将命令行参数作为字符串传递给从C执行的嵌入式Python脚本?...

我有一个C程序,它公开了一个Python接口来执行用户的嵌入式Python脚本.用户插入要运行的Python脚本的路径和命令行参数.然后脚本执行完毕boost::python::exec_file(filename, main_globals, main_globals)要将命令行参数传递给Python脚本,我们必须通过Python C-API函数设置它们PySys_SetArgv(int arg...

weixin_28814119的博客 360

python获取命令行参数_Python获取命令行参数的正确方法,案例详解

最近编写一个python程序的时候,需要去获取python命令行的参数,因此这里记录下如何获取命令行参数的方法。一、sys 模块在 Python 中,sys 模块是一个非常常用且十分重要的模块,通过模块中的 sys.argv 就可以访问到所有的命令行参数,它的返回值是包含所有命令行参数的列表(list),参数个数: len(sys.argv)脚本名: sys.argv[0]参数1: sys.arg...

weixin_39554891的博客 276

Python中处理命令行参数的3种方法

作者|Dardan Xhymshiti 编译|VK 来源|Towards Data Science 1.sys模块 Python中的sys模块具有argv功能。当通过终端触发main.py的执行时,此功能返回所有命令行参数的列表。返回列表中的第一个元素是main.py. 考虑下面的main.py示例 import sys list_of_arguments = sys.argv print(list_of_args[0]) print(list_of_args[1]) print(list_of_a

TensorFlowNews 1106

python获取命令行输入变成 json_python获取json格式的命令行参数

前一段工作中一个python项目有一个小需求,要通过命令行向程序传递json格式的参数。这里分享一下实现的心得,主要是两部分:1.使用argparse来获取命令行参数:argparse是是Python标准库中推荐使用的编写命令行程序的工具通过一个例子来解释一下argparse的基本使用:import argparseparser = argparse.ArgumentParser(descript...

weixin_39812046的博客 1399

python笔记26-命令行传参sys.argv实际运用

前言 平常我们在用别人写好的python包的时候,在cmd输入xx -h就能查看到帮助信息,输入xx -p 8080就能把参数传入程序里,看起来非常酷。 本篇就来讲下如何在python代码里加入命令行参数,并且其它功能,能调用这个参数。 argv获取参数 Python 中也可以所用 sys 的 sys.argv 来获取命令行参数: sys.argv 是命令行参数列表。 len(sys.argv)...

weixin_33672400的博客 622
上一篇: 列出tar压缩包中的第一级目录
下一篇: 随笔日记: 一个daemon程序,它的pthread_join()经常意外返回, 很是奇怪!
code_thin_write
博客等级 码龄17年 1粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值