日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 之 分割参数getopt

發布時間:2025/7/25 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 之 分割参数getopt 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

FROM:http://andylin02.iteye.com/blog/845355


python 之 分割參數getopt

?

os下有個方法walk,非常的好用,用來生成一個generator。每次可以得到一個三元tupple,其中第一個為起始路徑,第二個為起始路徑下的文件夾,第三個是起始路徑下的文件。
?1. 導入getopt, sys 模塊
2. 分析命令行參數
3. 處理結果

第一步很簡單,只需要:
import getopt, sys

第二步處理方法如下(以Python 手冊上的例子為例):

Python代碼 ?
  • try:??
  • ????opts,?args?=?getopt.getopt(sys.argv[1:],?"ho:",?["help",?"output="])??
  • except?getopt.GetoptError:??
  • ????#?print?help?information?and?exit:??
  • ?

    1. 處理所使用的函數叫getopt() ,因為是直接使用import 導入的getopt 模塊,所以要加上限定getopt 才可以。
    2. 使用sys.argv[1:] 過濾掉第一個參數(它是執行腳本的名字,不應算作參數的一部分)。
    3. 使用短格式分析串"ho:" 。當一個選項只是表示開關狀態時,即后面不帶附加參數時,在分析串中寫入選項字符。當選項后面是帶一個附加參數時,在分析串中寫入選項字符同時后面加一個":" 號 。所以"ho:" 就表示"h" 是一個開關選項;"o:" 則表示后面應該帶一個參數。
    4. 使用長格式分析串列表:["help", "output="] 。長格式串也可以有開關狀態,即后面不跟"=" 號。如果跟一個等號則表示后面還應有一個參數 。這個長格式表示"help" 是一個開關選項;"output=" 則表示后面應該帶一個參數。
    5. 調用getopt 函數。函數返回兩個列表:opts 和args 。opts 為分析出的格式信息。args 為不屬于格式信息的剩余的命令行參數。opts 是一個兩元組的列表。每個元素為:( 選項串, 附加參數) 。如果沒有附加參數則為空串'' 。
    6. 整個過程使用異常來包含,這樣當分析出錯時,就可以打印出使用信息來通知用戶如何使用這個程序。

    如上面解釋的一個命令行例子為:
    '-h -o file --help --output=out file1 file2'

    在分析完成后,opts 應該是:
    [('-h', ''), ('-o', 'file'), ('--help', ''), ('--output', 'out')]

    而args 則為:
    ['file1', 'file2']
    第三步主要是對分析出的參數進行判斷是否存在,然后再進一步處理。主要的處理模式為:

    Python代碼 ?
  • for?o,?a?in?opts:??
  • ????if?o?in?("-h",?"--help"):??
  • ????????usage()??
  • ????????sys.exit()??
  • ????if?o?in?("-o",?"--output"):??
  • ????????output?=?a??
  • ?


    使用一個循環,每次從opts 中取出一個兩元組,賦給兩個變量。o 保存選項參數,a 為附加參數。接著對取出的選項參數進行處理。(例子也采用手冊的例子)

    ?

    實踐篇:

    Python代碼 ?
  • #!/usr/bin/env?python??
  • ??
  • import?sys;??
  • import?getopt;??
  • ??
  • def?usage():??
  • ????print("Usage:%s?[-a|-o|-c]?[--help|--output]?args...."?%Dsys.argv[0]);??
  • ??
  • ??
  • if?"__main__"?==?__name__:??
  • ????#lsArgs?=?[""];??
  • ??????
  • ????try:??
  • ????????opts,args?=?getopt.getopt(sys.argv[1:],?"ao:c",?["help",?"output="]);??
  • ??????
  • ????????print("============?opts?==================");?????????
  • ????????print(opts);??
  • ??????
  • ????????print("============?args?==================");??
  • ????????print(args);??
  • ??????????
  • ????????#check?all?param??
  • ????????for?opt,arg?in?opts:??
  • ????????????if?opt?in?("-h",?"--help"):??
  • ????????????????usage();??
  • ????????????????sys.exit(1);??
  • ????????????elif?opt?in?("-t",?"--test"):??
  • ????????????????print("for?test?option");??
  • ????????????else:??
  • ????????????????print("%s??==>?%s"?%(opt,?arg));??????????
  • ??????????
  • ????except?getopt.GetoptError:??
  • ????????print("getopt?error!");??
  • ????????usage();??
  • ????????sys.exit(1);??
  • ?

    運行結果:

    $ ./test_getopt.py? -a -oaaa -caa --output=out file1 t file2 -d
    ============ opts ==================
    [('-a', ''), ('-o', 'aaa'), ('-c', ''), ('-a', ''), ('-a', ''), ('--output', 'out')]
    ============ args ==================
    ['file1', 't', 'file2', '-d']
    -a? ==>
    -o? ==> aaa
    -c? ==>
    -a? ==>
    -a? ==>
    --output? ==> out
    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的python 之 分割参数getopt的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。