導航:首頁 > 編程語言 > 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函數相關的資料

熱點內容
哪個app聽音樂最好 瀏覽:279
考研英語2真題pdf 瀏覽:697
煙台編程積木教育環境好不好 瀏覽:214
python優秀代碼 瀏覽:620
androidtop命令 瀏覽:455
你平時怎麼排解壓力 瀏覽:68
表格中的文件夾怎樣設置 瀏覽:476
em78單片機 瀏覽:960
splitjava空格 瀏覽:248
電腦怎麼谷歌伺服器地址 瀏覽:515
nx自定義工具啟動宏命令 瀏覽:101
程序員怎麼解決無法訪問互聯網 瀏覽:303
java訪問本地文件 瀏覽:747
瓦斯琪伺服器怎麼用 瀏覽:22
安卓主題用什麼app 瀏覽:747
修改伺服器pci地址空間 瀏覽:321
程序員將來去哪裡 瀏覽:966
虛幻5創建c無法編譯 瀏覽:189
javaweb項目設計 瀏覽:407
國家反詐app緊急聯系人怎麼填 瀏覽:191