导航:首页 > 编程语言 > pythongetopt函数

pythongetopt函数

发布时间:2023-04-03 03:26:54

㈠ 求一份鱼C工作室,python 课后测试题及答案!!

1,使用getopt。getopt()优化当前的功能函数:
[html]
#!/usr/bin/python
# -*- coding: utf-8 -*-
#coding=utf-8
import os,sys
import getopt
print sys.argv
CDROW='/home/zhouqian/test'
def cdWalker(CDROW,cdfile):
result=[]
for root,dirs,files in os.walk(CDROW):
result.append("%s %s %s" %(root,dirs,files))
print root
open(cdfile,'w').write('\n'.join(result))

def usage():
print '''pycdc 使用方式:
python cdays-3-exercise-1.py -d cdc -k 中国火
#检索cdc中有没有中国火字样的目录,
'''
try:
opts,args=getopt.getopt(sys.argv[1:],'hd:e:k:')
except getopt.GetoptError:
usage()
sys.exit()

if len(opts)==0:
usage()
sys.exit()
c_path=''
name=''
for opt,arg in opts:
if opt in('-h','--help'):
usage()
sys.exit()
elif opt=='-e':
if os.path.exists(arg):#判断目标路径是否存在
# cdWalker(CDROW,arg)
print "记录光盘的位置是 %s" %arg
else:
print "不存在这样的目录"
elif opt=='-d':
c_path=arg
print c_path
cdWalker(CDROW,c_path)
elif opt=='-k':
if not c_path:
usage()
sys.exit()
else:
name=arg
for root,dirs,files in os.walk(c_path):
if root=='%s' %name:
print '您要找的文件在%s' %dirs
这是第一个题,大概做了2个小时吧,各种纠结啊,后面两个正在做。中间遇到的问题总结:
函式的利用,os.path.walk,python字符集,getopt模块的使用学习,os.path.exists()的利用,列表的对应关系等等
习题2 :关键词-----》序列号问题:
[html]
#!/usr/bin/python
#coding=utf-8
import sys
def collect(file):
result={}
for line in file.readlines():
left,right=line.split()
if result.has_key(right):
result[right].append(left)
else:
result[right]=[left]
return result

if __name__=="__main__":
print sys.argv
if len(sys.argv)==1:
print 'usage:\tpython value_keys.py test.txt'
else:
result=collect(open(sys.argv[1],'r'))
for (right,left) in result.items():
print "%d %s => %s" %(len(left),right,left)

结果显示:
[html]
root@zhou:/home/zhouqian/python# py value_keys.py test.txt
ssss
2 key3 => ['6', '33']
3 key2 => ['1', '2', '45']
3 key1 => ['4', '5', '13']
遇到的问题总结:
split的用法:line.split()就是分开出左右两边的值,在默认的情况下是以一个空格或者多个空格为分割符的,
has_key()的用法:是查看字典数据类型中有没有这么一个关键字。上面可知result={}是初始化了一个字典的数据类型。
字典的一些用法:怎么定义,怎么赋值:result[right]=[left]或者result[right]=left,遍历字典中所用
项,result.items(),遍历字典的key值:result.keys(),遍历字典的value值:result.values()
[html]
>>> dict={'chen':25,'zhou':24,'xiao':35}
>>> dict.values()
[25, 35, 24]
>>> dict.keys()
['chen', 'xiao', 'zhou']
>>> dict.items()
[('chen', 25), ('xiao', 35), ('zhou', 24)]

㈡ python中的 getopt有什么作用呢

用来处理命令行参数的,比如你开发一个小工具,都要写一个 使用帮助吧,就用这个。

㈢ python中的from getopt import GetoptError有什么作用呢

getopt是用来处理命令行参数的,一般的工具肯定都有参数帮助。getopterror就是exception意外错误的处理呗,比如getopt允许处理a,b,c三个参数,但是用户输入了d这个参数,那么就有error来处理,跑出一场或者退出。

㈣ python中的from getopt import getopt有什么作用呢

from getopt import getopt就是从getopt包里导入getopt模块,也可以直接import getopt,getopt主要是python用来获取命令行参数用的,如:python test.py -y 23,你需要传一个参数y是就可以用getopt

importgetopt,sys
try:
opts,args=getopt.getopt(sys.argv[1:],"ho:",["help","y="])
exceptgetopt.GetoptError:
#printhelpinformationandexit:

具体可以参考下API文档

㈤ python主函数怎么写

一般来说,Python程序员可能是这样写main()函数的:
"""Mole docstring.

This serves as a long usage message.
"""import sysimport getoptdef main():
# parse command line options
try:
opts, args = getopt.getopt(sys.argv[1:], "h", ["help"]) except getopt.error, msg: print msg print "for help use --help"
sys.exit(2) # process options
for o, a in opts: if o in ("-h", "--help"): print __doc__
sys.exit(0) # process arguments
for arg in args:
process(arg) # process() is defined elsewhereif __name__ == "__main__":
main()

Guido也承认之前自己写的main()函数也是类似的结构,但是这样写的灵活性还不够高,尤其是需要解析复杂的命令行选项时。为此,他向大家提出了几点建议。
添加可选的 argv 参数
首先,修改main()函数,使其接受一个可选参数 argv,支持在交互式shell中调用该函数:
def main(argv=None):
if argv is None:
argv = sys.argv # etc., replacing sys.argv with argv in the getopt() call.1234

这样做,我们就可以动态地提供 argv 的值,这比下面这样写更加的灵活:
def main(argv=sys.argv):
# etc.12

这是因为在调用函数时,sys.argv 的值可能会发生变化;可选参数的默认值都是在定义main()函数时,就已经计算好的。
但是现在sys.exit()函数调用会产生问题:当main()函数调用sys.exit()时,交互式解释器就会推出!解决办法是让main()函数的返回值指示退出状态(exit status)。因此,最后面的那行代码就变成了这样:
if __name__ == "__main__":
sys.exit(main())12

并且,main()函数中的sys.exit(n)调用全部变成return n。
定义一个Usage()异常
另一个改进之处,就是定义一个Usage()异常,可以在main()函数最后的except子句捕捉该异常:
import sysimport getoptclass Usage(Exception):
def __init__(self, msg):
self.msg = msgdef main(argv=None):
if argv is None:
argv = sys.argv try: try:
opts, args = getopt.getopt(argv[1:], "h", ["help"]) except getopt.error, msg: raise Usage(msg) # more code, unchanged
except Usage, err: print >>sys.stderr, err.msg print >>sys.stderr, "for help use --help"
return 2if __name__ == "__main__":
sys.exit(main())

这样main()函数就只有一个退出点(exit)了,这比之前两个退出点的做法要好。而且,参数解析重构起来也更容易:在辅助函数中引发Usage的问题不大,但是使用return 2却要求仔细处理返回值传递的问题。

㈥ Python3 中getopt用法

该模块是 专门用来芹漏处理激谈命令行参数的
函数:opts, args = getopt(args, shortopts, longopts = [])
参数:

返回:

测试结果如下:明首碰

㈦ python2.7 怎么解析命令行输入的中文参数

本文实例讲述了python读取命令行参数的方法。分享给大家供大家参考。具体分析如下:
如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?
需要模块:sys
参数个数:len(sys.argv)
脚本名: sys.argv[0]
参数1: sys.argv[1]
参数2: sys.argv[2]
test.py:
import sys
print "脚本名:", sys.argv[0]
for i in range(1, len(sys.argv)):
print "参数", i, sys.argv[i]
>>>python test.py hello world

脚本名:test.py
参数 1 hello
参数 2 world
python中使用命令行选项:
例如我们需要一个convert.py脚本。它的作用是处理一个文件,并将处理后的结果输出到另一个文件中。
要求该脚本满足以下条件:
1.通过-i -o选项来区别参数是输入文件还是输出文件.
>>> python convert.py -i inputfile -o outputfile
2.当不知道convert.py需要哪些参数时,用-h打印出帮助信息
>>> python convert.py -h
getopt函数原形:
getopt.getopt(args, options[, long_options])
convert.py:
import sys, getopt
opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
input_file=""
output_file=""
for op, value in opts:
if op == "-i":
input_file = value
elif op == "-o":
output_file = value
elif op == "-h":
usage()
sys.exit()

代码解释:
a) sys.argv[1:]为要处理的参数列表,sys.argv[0]为脚本名,所以用sys.argv[1:]过滤掉脚本名。
b) "hi:o:": 当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":"号。所以"hi:o:"就表示"h"是一个开关选项;"i:"和"o:"则表示后面应该带一个参数。
c) 调用getopt函数。函数返回两个列表:opts和args。opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数。opts是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串''。
getopt函数的第三个参数[, long_options]为可选的长选项参数,上面例子中的都为短选项(如-i -o)
长选项格式举例:
--version
--file=error.txt
让一个脚本同时支持短选项和长选项
getopt.getopt(sys.argv[1:], "hi:o:", ["version", "file="])
希望本文所述对大家的Python程序设计有所帮助。

㈧ 鱼C工作室Python作业

公告:还在担心鱼币不够用?买个终身会员,一劳永逸!

小甲鱼2018-11-1


[课后作业]第001讲:我和Python的第一次亲密接触 | 课后测试题及答案
...23456..8322

小甲鱼2013-9-27 25925188663 亿颗学徒的心1小时前

[课后作业]第010讲:列表:一个打了激素的数组 | 课后测试题及答案- [售价10鱼币]...23456..1217

小甲鱼2013-10-5 24337172896 亿颗学徒的心12分钟前

[课后作业]第011讲:列表:一个打了激素的数组2 | 课后测试题及答案- [售价10鱼币]...23456..1098

小甲鱼2013-10-8 21948154689 fishc_tigerfu半小时前

[课后作业]第012讲:列表:一个打了激素的数组3 | 课后测试题及答案- [售价10鱼币]...23456..1100

小甲鱼2013-10-12 21984163848 Baddy_C6分钟前

[课后作业]第013讲:元组:戴上了枷锁的列表 | 课后测试题及答案- [售价10鱼币]...23456..999

小甲鱼2013-10-20 19963135589 头顶微凉19分钟前

[课后作业]第014讲:字符串:各种奇葩的内置方法 | 课后测试题及答案- [售价10鱼币]...23456..930

小甲鱼2013-10-21 18585168463 那位大人半小时前

[课后作业]第015讲:字符串:格式化 | 课后测试题及答案- [售价10鱼币]...23456..849

小甲鱼2013-11-28 16976141313 迷茫的snail2小时前

[课后作业]第016讲:序列!序列! | 课后测试题及答案- [售价10鱼币]...23456..844

小甲鱼2013-12-14 16865116423 manchesiteliuyu半小时前

[课后作业]第017讲:函数 - Python的乐高积木 | 课后测试题及答案- [售价10鱼币]...23456..945

小甲鱼2013-12-17 18893141618 溪风ttt2小时前

[课后作业]第018讲:函数:灵活即强大 | 课后测试题及答案- [售价10鱼币]...23456..861

小甲鱼2014-1-7 17212126242 hzf5201小时前

[课后作业]第019讲:函数:我的地盘听我的 | 课后测试题及答案- [售价10鱼币]...23456..835

小甲鱼2014-1-8 16691129653 ushio00114分钟前

[课后作业]第020讲:函数:内嵌函数和闭包 | 课后测试题及答案- [售价10鱼币]...23456..836

小甲鱼2014-1-11 16712133470 @tao1小时前

[课后作业]第021讲:函数:lambda表达式 | 课后测试题及答案- [售价10鱼币]...23456..731

小甲鱼2014-3-16 14611107123 ranshi007半小时前

[课后作业]第022讲:函数:递归是神马 | 课后测试题及答案- [售价10鱼币]...23456..702

小甲鱼2014-3-17 1403099695 skywing1682小时前

[课后作业]第023、024讲:递归:这帮小兔崽子、汉诺塔 | 课后测试题及答案- [售价10鱼币]...23456..634

小甲鱼2014-3-19 12660105956 Python..6分钟前

[课后作业]第025讲:字典:当索引不好用时 | 课后测试题及答案- [售价10鱼币]...23456..617

小甲鱼2014-3-21 1232591640 1532022658012分钟前

[课后作业]第026讲:字典:当索引不好用时2 | 课后测试题及答案- [售价10鱼币]...23456..558

小甲鱼2014-3-24 1115486744 huangwenjun1小时前

[课后作业]第027讲:集合:在我的世界里,你就是唯一 | 课后测试题及答案- [售价10鱼币]...23456..503

小甲鱼2014-3-27 1004094262 Lamedadada3分钟前

[课后作业]第028讲:文件:因为懂你,所以永恒 | 课后测试题及答案- [售价10鱼币]...23456..621

小甲鱼2014-3-30 12410109128 千屿王子1小时前

[课后作业]第029讲:文件:一个任务 | 课后测试题及答案- [售价10鱼币]...23456..603

小甲鱼2014-4-2 12045131223 千屿王子1小时前

[课后作业]第030讲:文件系统:介绍一个高大上的东西 | 课后测试题及答案- [售价10鱼币]...23456..494

小甲鱼2014-4-7 9874110873 _panky1小时前

[课后作业]第031讲:永久存储:腌制一缸美味的泡菜 | 课后测试题及答案- [售价10鱼币]...23456..423

小甲鱼2014-4-13 844372294 ccc电池21分钟前

[课后作业]第032讲:异常处理:你不可能总是对的 | 课后测试题及答案- [售价10鱼币]...23456..360

小甲鱼2014-4-26 719462931 小小老虎05271小时前

[课后作业]第033讲:异常处理:你不可能总是对的2 | 课后测试题及答案- [售价10鱼币]...23456..391

小甲鱼2014-4-28 781961046 太复杂6小时前

[课后作业]第034讲:丰富的else语句及简洁的with语句 | 课后测试题及答案- [售价10鱼币]...23456..377

小甲鱼2014-6-10 753960981 小小老虎05271小时前

[课后作业]第035讲:图形用户界面入门:EasyGui | 课后测试题及答案- [售价10鱼币]...23456..368

小甲鱼2014-6-12 735985669 小米苏万事可爱3小时前

[课后作业]第036讲:类和对象:给大家介绍对象 | 课后测试题及答案- [售价10鱼币]...23456..485

小甲鱼2014-6-16 969966162 1855100454910分钟前

[课后作业]第037讲:类和对象:面向对象编程 | 课后测试题及答案- [售价10鱼币]...23456..524

小甲鱼2014-6-20 1046780971 瓜_子6小时前

[课后作业]第038讲:类和对象:继承 | 课后测试题及答案- [售价10鱼币]...23456..414

小甲鱼2014-6-24 826158391 alenvan1小时前

[课后作业]第039讲:类和对象:拾遗 | 课后测试题及答案- [售价10鱼币]...23456..369

小甲鱼2014-8-17 737856868 瓜_子6小时前

[课后作业]第040讲:类和对象:一些相关的BIF | 课后测试题及答案- [售价10鱼币]...23456..310

小甲鱼2014-8-19 618953849 瓜_子1小时前

[课后作业]第041讲:魔法方法:构造和析构 | 课后测试题及答案- [售价10鱼币]...23456..329

小甲鱼2014-8-21 657946433 icewin昨天23:03

[课后作业]第042讲:魔法方法:算术运算 | 课后测试题及答案- [售价10鱼币]...23456..298

小甲鱼2014-8-27 594545059 卡比小飞龙8小时前

[课后作业]第043讲:魔法方法:算术运算2 | 课后测试题及答案- [售价10鱼币]...23456..265

小甲鱼2014-8-29 529041524 刘又又1小时前

[课后作业]第044讲:魔法方法:简单定制 | 课后测试题及答案- [售价10鱼币]...23456..250

小甲鱼2014-11-17 499949235 aliang123半小时前

[课后作业]第045讲:魔法方法:属性访问 | 课后测试题及答案- [售价10鱼币]...23456..232

小甲鱼2014-11-28 462138731 ablat1小时前

[课后作业]第046讲:魔法方法:描述符(Property的原理) | 课后测试题及答案- [售价10鱼币]...23456..205

小甲鱼2014-12-12 408133198 千屿王子14分钟前

[课后作业]第047讲:魔法方法:定制序列 | 课后测试题及答案- [售价10鱼币]...23456..196

小甲鱼2015-2-25 390932379 刘又又2小时前

[课后作业]第048讲:魔法方法:迭代器 | 课后测试题及答案- [售价10鱼币]...23456..187

小甲鱼2015-4-20 373227878 回羊1小时前

[课后作业]第049讲:乱入:生成器 | 课后测试题及答案- [售价10鱼币]...23456..172

小甲鱼2015-4-20 343326725 刘又又4小时前

[课后作业]第050讲:模块:模块就是程序 | 课后测试题及答案- [售价10鱼币]...23456..177

小甲鱼2015-4-24 352631561 Tippy~7小时前

[课后作业]第051讲:__name__属性、搜索路径和包 | 课后测试题及答案- [售价10鱼币]...23456..171

小甲鱼2015-10-23 341728409 瑾biu6小时前

[课后作业]第052讲:像极客一样去思考 | 课后测试题及答案- [售价10鱼币]...23456..150

小甲鱼2015-10-24 299024191 瑾biu2小时前

[课后作业]第053讲:论一只爬虫的自我修养 | 课后测试题及答案- [售价10鱼币]...23456..240

小甲鱼2015-11-9 479446740 Dida111111181小时前

[课后作业]第054讲:论一只爬虫的自我修养2:实战 | 课后测试题及答案- [售价10鱼币]...23456..186

小甲鱼2015-11-18 370539577 白小贝6小时前

[课后作业]第055讲:论一只爬虫的自我修养3:隐藏 | 课后测试题及答案- [售价10鱼币]...23456..152

小甲鱼2016-5-17 303150222 juncao50昨天17:42

上图为网站图,网站为:网页链接。

㈨ Python笔记:命令行参数解析

有些时候我们需要通过命令行将参数传递给脚本,C语言中有个getopt()方法,python中也有个类似的命令行参数解析方法getopt()。python也提供了比getopt()更简洁的argparse方法。另外,sys模块也可以实现简单的参数解析,本文将对这3种命令行参数解析方法简要介绍。

sys.argv是传入的参数列表,sys.argv[0]是当前python脚本的名称,sys.argv[1]表示第一个参数,以此类推。

命令行运行:

可以看到传入的参数通过sys.argv来获取,它就是一个参数列表。

python的getopt与C语言的的getopt()函数类似。相比于sys模块,支持长参数和短参数,并对参数解析赋值。但它需要结合sys模块进行参数解析,语法格式如下:

短参数为单个英文字母,如果必须赋值需要在后面加英文冒号( : ),长参数一般为字符串(相比短参数,更能说明参数含义),如果必须赋值需要在后面加等号( = )。

命令行运行:

注意:短参数(options)和长参数(long_options)不需要一一对应,可以任意顺序,也可以只有短参数或者只有长参数。

argparse模块提供了很多可以设置的参数,例如参数的默认值,帮助消息,参数的数据类型等。argparse类主要包括ArgumentParser、add_argument和parse_args三个方法。

下面介绍这三个函数的使用方法。

argparse默认提供了 -h | --help 参数:

命令行运行:

下面列出部分参数:

下面来添加参数:

命令行运行:

parse_args() 方法用于解析参数,在前面的示例代码中使用parse_args方法来提取参数值,对于无效或者错误的参数会打印错误信息和帮助信息:

命令行运行:

本文介绍了Python的三种命令行参数解析方法sys.argv、getopt和argparse,可以根据自己的需要进行选择,getopt和argparse两种方法相比来说,建议选择argparse,代码量更少更简洁。更详细的使用方法参考官方文档:

--THE END--

㈩ 解析命令行参数的函数

1.全局变量解释:
optarg: 如果选项带参数,参数保存在optarg中。如果选项带可选参数,而实际无参数时,optarg为NULL。

optind:argv数组中下一次需要处理的元素的下标,系统默认初始化此值为1. 0是没有意义的,argv[0]为程序名,在解析命令行参数中是没有意义的。getopt正常解析完毕后,optind设置为argv数组中第一个不是选项的元素的下标(一般为0)。

opterr:存储错误耐猛纳选项字符.

2. GNU/Linux的命令行选项有两种类型: 短选项和长选项昌没 ,前者以 '-' 作为前导符,后者以 '--' 作为前导符。 -n 表示是一个不带参数的短选项。 --n 表示是一个不带参数的长选项。现在有一个带有参数的短选项比如说 -w foo ,那么它和长选项 --foo 是等价的。

函数声明:

函数参数:
1.argc:主函数传递过来的实参
2.argv:主函数传递过来的实参
3.optstring:一个包含选项字符的字符串。 一组短选项组成的字符串

函数调用结果
1.该函数每解析完一个选项,就返回该选项字符。选项字符解析完毕后,调用getopt函数将会返回-1,然后optind设置为argv数组中第一个不是选项的元素的下标。
2. 当调用getopt函数检测到错误时(比如说检测到的选项字符不在optstring实参中),默认情况下函数返回'?'。 为什么说是默认呢?因为如果通过optstring实参指明选项带参数,而实际命令行没有参数时,getopt返回 ':' 而不是 '?'

关于optstring,还有几点说明:
1.如果选项带参数,该选项后接冒号,比如optstring这个实参值为"a:b",指示a带参数,b没有参数;

2.如果选项带可选参数,该选项后接两个冒号,比如"a::b",表明a可能有参数,也可能没有;

3.如果optstring的开头字符为':',表明如果指明选项带参数,而实际命令行没有参数时,getopt返回':'而不是'?'(默认情况下返回 '?' ,和无法识别的参数返回一样);

4.如果optstring的开头字符为'+',表明一但遇到一个非选项参数,马上停止扫描,随后的部分当作参数来解释;

5.如果optstring的开头字符为'-',表明如知贺果遇到无选项参数,则把它当作选项1(不是字符Ƈ')的参数

示例:(来源于man文档)

运行示例:

函数声明:

函数参数:
longops:指向一个option结构体数组的第一个元素。
longindex:getopt_long的最后一个参数longindex在函数返回时指向被搜索到的选项在longopts数组中的下标。

关于option struct如下:

注意在初始化option struct时: The last element of the array has to be filled with zeros.

函数返回值:
1.如果flag这个实参为null,那么这个函数返回val的值。 这样短选项字符解析和长选项解析搭建了桥梁。
2.如果flag这个实参不为null,那么这个函数返回0
3.选项字符解析完毕后,调用getopt_long函数将会返回-1
4.当调用getopt_long函数检测到错误时(比如说检测到的选项字符不在longops实参中),默认情况下函数返回'?'

示例:(来源于man 文档)

运行示例如下:

getopt_long_only类似于getopt_long,但是它把 '-' 开头的选项当作长选项来处理。如果该选项与长选项不匹配,而与短选项匹配,则可以作为短选项解析。

阅读全文

与pythongetopt函数相关的资料

热点内容
表格中的文件夹怎样设置 浏览:474
em78单片机 浏览:952
splitjava空格 浏览:248
电脑怎么谷歌服务器地址 浏览:515
nx自定义工具启动宏命令 浏览:101
程序员怎么解决无法访问互联网 浏览:303
java访问本地文件 浏览:747
瓦斯琪服务器怎么用 浏览:22
安卓主题用什么app 浏览:747
修改服务器pci地址空间 浏览:321
程序员将来去哪里 浏览:966
虚幻5创建c无法编译 浏览:189
javaweb项目设计 浏览:407
国家反诈app紧急联系人怎么填 浏览:191
单片机旋转led 浏览:340
杜洋单片机官网 浏览:467
法国加密货币税务 浏览:28
stringslinux 浏览:944
gis服务器里文件如何处理 浏览:829
sec加密数字资产 浏览:930