天天看點

Python之子產品介紹

子產品:用一段代碼實作了某些功能的代碼集合。

Python子產品分為三種:

自定義子產品

内置标準子產品

開源子產品

os子產品:提供對作業系統進行調用的接口,以下是方法

os.getcwd() :擷取目前工作目錄,即目前python腳本工作的目錄路徑

示例:

1

2

3

4

<code>&gt;&gt;&gt; </code><code>import</code> <code>os</code>

<code>&gt;&gt;&gt; path = os.getcwd()</code>

<code>&gt;&gt;&gt; print path</code>

<code>/Users/zenge</code>

os.chdir("dirname")  改變目前腳本工作目錄,相當于cd。

5

<code>&gt;&gt;&gt; print os.getcwd()</code>

<code>/Users/zenge/Downloads</code>

<code>&gt;&gt;&gt; new_path = os.chdir(</code><code>"/Users/zenge"</code><code>)</code>

os.curdir 傳回目前目錄:('.')

os.pardir  傳回目前目錄的父目錄字元串名(‘..’)

<code>&gt;&gt;&gt; print os.pardir</code>

<code>..</code>

os.makedirs('dirname1/dirname2')  可生成多層遞歸目錄

<code>&gt;&gt;&gt; os.makedirs(</code><code>'aaa/bbb'</code><code>)</code>

os.removedirs('dirname1/dirname2')  : 若目錄為空,則删除,并遞歸到上一級目錄,如果上一級目錄也為空,則一并删除

&gt;&gt;&gt; os.mkdir('aaaa'):生成單級目錄,相當于linux指令mkdir

&gt;&gt;&gt; os.listdir('aaaa'):列出目标目錄下的所有檔案和目錄

<code>[</code><code>'b'</code><code>, </code><code>'test'</code><code>, </code><code>'a'</code><code>, </code><code>'c'</code><code>]</code>

<code>root@localhost:~</code><code>/aaaa</code><code># ls</code>

<code>a  b  c  </code><code>test</code>

os.remove() 删除一個檔案:

<code>os.remove(</code><code>'txt'</code><code>)</code>

os.rename("oldname","newname"): 重命名一個目錄/檔案,如果新的檔案名存在則報錯

os.stat('path/filename'):  擷取檔案、目錄資訊

<code>&gt;&gt;&gt; os.stat(</code><code>'install.log'</code><code>)</code>

<code>posix.stat_result(st_mode=33188, st_ino=262146, st_dev=64768L, st_nlink=1, st_uid=0, st_gid=0, st_size=9795, st_atime=1449083485, st_mtime=1449083572, st_ctime=1449083575)</code>

os.sep:輸出作業系統特定的路徑分隔符,win下為“\\”,linux下為"/"

<code>&gt;&gt;&gt; os.sep</code>

<code>'/'</code>

os.linesep:輸出目前平台使用的行終止符,win下為“\t\n”,linux下為'\n'

<code>&gt;&gt;&gt; os.linesep</code>

<code>'\n'</code>

os.pathsep  輸出用于分割檔案路徑的字元串

<code>&gt;&gt;&gt; os.pathsep</code>

<code>':'</code>

os.name 輸出字元串訓示目前使用平台。win-&gt;'nt',linux-&gt;‘posix’

<code>&gt;&gt;&gt; os.name</code>

<code>'posix'</code>

os.system("bash command"): 運作linux指令。

<code>&gt;&gt;&gt; os.system(</code><code>'ls'</code><code>)</code>

<code>aa.py            apache-ant-1.9.6-bin.</code><code>tar</code><code>.gz  git-2.6.4         </code><code>install</code><code>.log         jenkins.war</code>

<code>anaconda-ks.cfg  epel-release-6-8.noarch.rpm  git-2.6.4.</code><code>tar</code><code>.gz  </code><code>install</code><code>.log.syslog</code>

<code>0</code>

os.environ 擷取系統環境變量

&gt;&gt;&gt; os.environ

<code>{</code><code>'LESSOPEN'</code><code>: </code><code>'||/usr/bin/lesspipe.sh %s'</code><code>, </code><code>'SSH_CLIENT'</code><code>: </code><code>'172.16.101.215 54940 22'</code><code>, </code><code>'CVS_RSH'</code><code>: </code><code>'ssh'</code><code>, </code><code>'LOGNAME'</code><code>: </code><code>'root'</code><code>, </code><code>'USER'</code><code>: </code><code>'root'</code><code>, </code><code>'MAVEN_HOME'</code><code>: </code><code>'/usr/local/apache-maven'</code><code>, </code><code>'PATH'</code><code>: </code><code>'/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.8.0_66/bin:/usr/local/apache-maven/bin:/root/bin:/usr/local/git/bin:/root/bin'</code><code>, </code><code>'LANG'</code><code>: </code><code>'en_US.UTF-8'</code><code>, </code><code>'TERM'</code><code>: </code><code>'linux'</code><code>, </code><code>'SHELL'</code><code>: </code><code>'/bin/bash'</code><code>, </code><code>'SHLVL'</code><code>: </code><code>'1'</code><code>, </code><code>'G_BROKEN_FILENAMES'</code><code>: </code><code>'1'</code><code>, </code><code>'HISTSIZE'</code><code>: </code><code>'1000'</code><code>, </code><code>'JAVA_HOME'</code><code>: </code><code>'/usr/local/jdk1.8.0_66'</code><code>, </code><code>'HOME'</code><code>: </code><code>'/root'</code><code>, </code><code>'CLASSPATH'</code><code>: </code><code>'.:/usr/local/jdk1.8.0_66/lib:/usr/local/jdk1.8.0_66/jre/lib'</code><code>, </code><code>'JRE_HOME'</code><code>: </code><code>'/usr/local/jdk1.8.0_66/jre'</code><code>, </code><code>'_'</code><code>: </code><code>'/usr/bin/python'</code><code>, </code><code>'SSH_CONNECTION'</code><code>: </code><code>'172.16.101.215 54940 10.10.10.201 22'</code><code>, </code><code>'ANT_HOME'</code><code>: </code><code>'/usr/local/ant'</code><code>, </code><code>'SSH_TTY'</code><code>: </code><code>'/dev/pts/1'</code><code>, </code><code>'HOSTNAME'</code><code>: </code><code>'localhost.localdomain'</code><code>, </code><code>'HISTCONTROL'</code><code>: </code><code>'ignoredups'</code><code>, </code><code>'PWD'</code><code>: </code><code>'/root'</code><code>, </code><code>'MAIL'</code><code>: </code><code>'/var/spool/mail/root'</code><code>, </code><code>'LS_COLORS'</code><code>: </code><code>'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:'</code><code>}</code>

os.path.abspath(path)  傳回path規範化的絕對路徑,檔案不存在也會有輸出結果

<code>&gt;&gt;&gt; os.path.abspath(</code><code>'aa.sh'</code><code>)</code>

<code>'/root/aa.sh'</code>

os.path.split(path) 傳回path分割成目錄和檔案名二進制組傳回。

6

<code>&gt;&gt;&gt; os.path.</code><code>split</code><code>(</code><code>'aa.sh'</code><code>)</code>

<code>(</code><code>''</code><code>, </code><code>'aa.sh'</code><code>)</code>

<code>&gt;&gt;&gt; os.path.</code><code>split</code><code>(</code><code>'/aa.sh'</code><code>)</code>

<code>(</code><code>'/'</code><code>, </code><code>'aa.sh'</code><code>)</code>

<code>&gt;&gt;&gt; os.path.</code><code>split</code><code>(</code><code>'/etc/aa.sh'</code><code>)</code>

<code>(</code><code>'/etc'</code><code>, </code><code>'aa.sh'</code><code>)</code>

os.path.dirname(path)  傳回path的目錄。其實就是os.path.split(path)

<code>&gt;&gt;&gt; os.path.</code><code>basename</code><code>(</code><code>'/root/aa.py'</code><code>)</code>

<code>'aa.py'</code>

<code>&gt;&gt;&gt; os.path.</code><code>basename</code><code>(</code><code>'/root/aa.py/no'</code><code>) </code>

<code>'no'</code>

os.path.exists(path) 如果path存在,傳回True,如果不存在,傳回False

<code>&gt;&gt;&gt; os.path.exists(</code><code>'aa'</code><code>)   </code>

<code>False</code>

<code>&gt;&gt;&gt; os.path.exists(</code><code>'/root'</code><code>)</code>

<code>True</code>

os.path.isabs(path):如果path是絕對路徑在傳回True,否則傳回False

<code>&gt;&gt;&gt; os.path.isabs(</code><code>'aa.py'</code><code>)</code>

<code>&gt;&gt;&gt; os.path.isabs(</code><code>'/aa.py'</code><code>)</code>

os.path.isfile(path): 如果path是一個存在的檔案,則傳回True,否則傳回False, 該方法會判斷檔案是否存在

<code>&gt;&gt;&gt; os.path.isfile(</code><code>'aa.py'</code><code>)</code>

<code>&gt;&gt;&gt; os.path.isfile(</code><code>'/aa.py'</code><code>)</code>

os.path.isdir(path):  如果path是一個存在的目錄,則傳回True,否則傳回False

<code>&gt;&gt;&gt; os.path.isdir(</code><code>'/root'</code><code>)</code>

<code>&gt;&gt;&gt; os.path.isdir(</code><code>'/abc'</code><code>) </code>

os.path.join(path1[,path2[, ...) :将多個路徑組合後傳回,第一個

os.path.getatime(path): 傳回path所指向的檔案或者目錄的存取時間

<code>&gt;&gt;&gt; os.path.getatime(</code><code>'aa.py'</code><code>) </code>

<code>1456380205.4800851</code>

os.path.getmtime(path)  傳回path所指向的檔案或者目錄的的最後修改時間

7

8

<code>&gt;&gt;&gt; os.path.getmtime(</code><code>'aa.py'</code><code>)</code>

<code>1456374256.7410889</code>

<code>&gt;&gt;&gt; os.path.getmtime(</code><code>'zabbix'</code><code>)</code>

<code>Traceback (most recent call last):</code>

<code>  </code><code>File </code><code>"&lt;stdin&gt;"</code><code>, line 1, </code><code>in</code> <code>&lt;module&gt;</code>

<code>  </code><code>File </code><code>"/usr/lib64/python2.6/genericpath.py"</code><code>, line 54, </code><code>in</code> <code>getmtime</code>

<code>    </code><code>return</code> <code>os.stat(filename).st_mtime</code>

<code>OSError: [Errno 2] No such </code><code>file</code> <code>or directory: </code><code>'zabbix'</code>

os.popen('command').read() : 擷取指令結果,不帶指令執行狀态

9

10

11

<code>&gt;&gt;&gt; a=os.popen(</code><code>'ls'</code><code>).</code><code>read</code><code>() </code>

<code>&gt;&gt;&gt; print a</code>

<code>aa.py</code>

<code>anaconda-ks.cfg</code>

<code>apache-ant-1.9.6-bin.</code><code>tar</code><code>.gz</code>

<code>epel-release-6-8.noarch.rpm</code>

<code>git-2.6.4</code>

<code>git-2.6.4.</code><code>tar</code><code>.gz</code>

<code>install</code><code>.log</code>

<code>install</code><code>.log.syslog</code>

<code>jenkins.war</code>

sys子產品

sys.argv :指令行參數list,第一個元素是程式本身

sys.exit(n): 退出程式,正常退出時exit(0)

sys.version:擷取Python解釋程式的版本資訊

sys.maxint:最大的Int值

sys.path:  傳回子產品的的搜尋路徑,初始化時使用python

sys.platform:傳回作業系統平台名稱

sys.stout.write('please: ')

val=sys.stdin.readline()[:-1]

shutil子產品:

是一種高層次的檔案操作工具

類似于進階API,而且主要強大之處在于其對檔案的複制與删除操作更是比較支援好

<a href="http://s5.51cto.com/wyfs02/M01/85/64/wKioL1eh92GzjYprAALvhNI9F_w374.png" target="_blank"></a>

shutil.copyfile():copy檔案内容,目标檔案需要有寫入的權限才行,否則把報IOError的錯誤

<code>[root@localhost ~]</code><code># cat a</code>

<code>aaaaaaaa</code>

<code>[root@localhost ~]</code><code># cat b</code>

<code>&gt;&gt;&gt; </code><code>import</code> <code>shutil</code>

<code>&gt;&gt;&gt; shutil.copyfile(</code><code>'a'</code><code>,</code><code>'b'</code><code>)</code>

如果沒有權限寫入b檔案,則報錯IOError

<code>&gt;&gt;&gt; shutil.copyfile(</code><code>'a'</code><code>,</code><code>'yum.log'</code><code>)</code>

<code>  </code><code>File </code><code>"/usr/lib64/python2.6/shutil.py"</code><code>, line 51, </code><code>in</code> <code>copyfile</code>

<code>    </code><code>with </code><code>open</code><code>(dst, </code><code>'wb'</code><code>) as fdst:</code>

<code>IOError: [Errno 13] Permission denied: </code><code>'yum.log'</code>

shutil.copymode():copy檔案的權限,不指派内容

12

13

14

15

16

17

18

<code>[root@localhost ~]</code><code># ll</code>

<code>total 0</code>

<code>-rwxr-xr-x. 1 root root 0 Jun 16 23:53 aaa</code>

<code>-rw-r--r--. 1 root root 0 Jun 16 23:53 bbb</code>

<code>[root@localhost ~]</code><code># cat aaa</code>

<code>aaa</code>

<code>&gt;&gt;&gt; shutil.copymode(</code><code>'aaa'</code><code>,</code><code>'bbb'</code><code>)</code>

<code>&gt;&gt;&gt; </code>

<code>檢視bbb的權限,和aaa一樣</code>

<code>total 4</code>

<code>-rwxr-xr-x. 1 root root 12 Jun 16 23:56 aaa</code>

<code>-rwxr-xr-x. 1 root root  0 Jun 16 23:53 bbb</code>

<code>[root@localhost ~]</code><code># cat bbb</code>

<code>[root@localhost ~]</code><code># </code>

<code>bbb檔案的内容為空,說明沒有複制檔案内容</code>

shutil.copystate():  copy檔案的權限,最後的通路時間、修改時間

先檢視aaa、bbb檔案的最後通路時間和修改時間:

ls -lu:檢視檔案的最後通路時間,即atime

ls -l:檢視檔案的最後修改時間

<code>[root@localhost ~]</code><code># ls -lu *</code>

<code>-rwxr-xr-x. 1 root root 4 Jun 17 00:04 aaa</code>

<code>-rwxr-xr-x. 1 root root 0 Jun 16 23:58 bbb</code>

<code>[root@localhost ~]</code><code># ls -l *</code>

<code>-rwxr-xr-x. 1 root root 0 Jun 16 23:53 bbb</code>

<code>&gt;&gt;&gt; shutil.copystat(</code><code>'aaa'</code><code>,</code><code>'bbb'</code><code>)</code>

<code>-rwxr-xr-x. 1 root root 0 Jun 17 00:04 bbb</code>

<code>-[root@localhost ~]</code><code># ls -l *</code>

shuti.copy() :将一個檔案拷貝到另一個檔案或者目錄中,如果目标是檔案,則隻拷貝檔案内容,不複制檔案的修改時間、通路時間

<code>複制檔案到檔案中</code>

<code>[root@localhost ~]</code><code># touch ccc</code>

<code>&gt;&gt;&gt; shutil.copy(</code><code>'aaa'</code><code>,</code><code>'ccc'</code><code>)</code>

<code>[root@localhost ~]</code><code># ls -l</code>

<code>total 8</code>

<code>-rwxr-xr-x. 1 root root 4 Jun 17 00:15 ccc</code>

<code>[root@localhost ~]</code><code># cat ccc</code>

<code>複制檔案到目錄中</code>

<code>&gt;&gt;&gt; shutil.copy(</code><code>'aaa'</code><code>,</code><code>'dir'</code><code>)</code>

<code>[root@localhost ~]</code><code># ls -l dir</code>

<code>-rwxr-xr-x. 1 root root 4 Jun 17 00:19 aaa</code>

shutil.copy2() 在複制檔案内容的基礎上,在複制檔案的通路時間,修改時間

<code>[root@localhost ~]</code><code># ls -l aaa ccc</code>

<code>&gt;&gt;&gt; shutil.copy2(</code><code>'aaa'</code><code>,</code><code>'ccc'</code><code>)</code>

<code>-rwxr-xr-x. 1 root root 4 Jun 17 00:04 ccc</code>

shutil.copytree(olddir,newdir,True/False):把一個old 目錄拷貝一份到new 目錄(new目錄必須不存在,否則報錯),目錄下的檔案也會拷貝,如果第三個參數是True,則複制時保持目錄下的符号連結,如果是False,則複制時生成檔案來替代符号連結

<code>[root@localhost ~]</code><code># ls dir new_dir/</code>

<code>dir</code><code>:</code>

<code>new_dir/:</code>

&gt;&gt;&gt; shutil.copytree('dir','new2_dir',True)

<code>[root@localhost ~]</code><code># ls dir new2_dir/</code>

<code>aaa  fstab_link</code>

<code>new2_dir/:</code>

&gt;&gt;&gt; shutil.copytree('dir','new3_dir',False)

<code>[root@localhost ~]</code><code># ls dir new3_dir/</code>

<code>new3_dir/:</code>

shutil.make_archive(base_name,format,...)

base_name:壓縮包的檔案名,也可以是壓縮包的路徑。如果隻是包名,則表示為目前路徑

format:壓縮包種類,支援“zip”,“tar”,“bztar”,“gztar”

root_dir:要壓縮的檔案夾路徑(預設目前目錄)

owner:使用者,預設為目前使用者

group:組,預設目前組

logger:用于記錄日志,通常是logging.logger對象

<code>&gt;&gt;&gt; shutil.make_archive(</code><code>'linux-packages.tar'</code><code>,</code><code>'tar'</code><code>,</code><code>'linux-packages'</code><code>)</code>

<code>'/Users/zenge/Downloads/linux-packages.tar.tar'</code>

<code> </code><code>~</code><code>/Downloads</code>  <code>$ </code><code>ls</code> <code>| </code><code>grep</code> <code>tar</code>

<code>linux-packages.</code><code>tar</code><code>.</code><code>tar</code>

shutil對壓縮包的處理是調用ZipFile和TarFile兩個子產品來進行的

time子產品

時間相關的操作,時間有三種表示方式:

時間戳               1970年1月1日之後的秒,即:time.time()

格式化的字元串    2014-11-11 11:11,    即:time.strftime('%Y-%m-%d')

結構化時間          元組包含了:年、日、星期等... time.struct_time    即:time.localtime()

time.time()傳回時間戳

print time.time()

<code>python time_test.py</code>

<code>1471425695.52</code>

time.gmtime()傳回一個元組形式的結構化的字元串

print time.gmtime()

<code>time</code><code>.struct_time(tm_year=2016, tm_mon=8, tm_mday=17, tm_hour=9, tm_min=37, tm_sec=38, tm_wday=2, tm_yday=230, tm_isdst=0)</code>

time.strftime(%Y-%m-%d)傳回指定格式的時間

print time.strftime(%Y-%m-%d %H:%M:%S)

<code>2016-08-17 17:36:07</code>

以上三種時間是可以互相轉換的

示例1:字元串格式的時間轉換成結構化的時間

示例2:結構化的時間轉換成時間戳

time.localtime() 傳回結構化時間

示例3:字元串時間轉時間戳

字元串時間不能直接轉換成時間戳,需要先轉換成結構化時間,在轉換成時間戳

<code>1462032000.0</code>

執行系統指令的子產品

os.system子產品

<code>class.py                day4                    func.py                 log11                   pyhton_modules          zabbix-api</code>

<code>coll.py                 email.py                index.py                log_new                 re_test.py              異常處理.py</code>

<code>day3                    file_demo.py            log                     logfile                 time_test.py</code>

commands子產品(Python3.x中被移除)

subprocess子產品

call 

執行指令,傳回狀态碼

<code>ret = subprocess.call(["ls", "-l"], shell=False)</code>

<code>ret = subprocess.call("ls -l", shell=True)</code>

shell = True ,允許 shell 指令是字元串形式

check_call

執行指令,如果執行狀态碼是 0 ,則傳回0,否則抛異常

<code>subprocess.check_call([</code><code>"ls"</code><code>, </code><code>"-l"</code><code>])</code>

<code>subprocess.check_call(</code><code>"exit 1"</code><code>, shell</code><code>=</code><code>True</code><code>)</code>

check_output

執行指令,如果狀态碼是 0 ,則傳回執行結果,否則抛異常

<code>subprocess.check_output([</code><code>"echo"</code><code>, </code><code>"Hello World!"</code><code>])</code>

<code>subprocess.check_output(</code><code>"exit 1"</code><code>, shell</code><code>=</code><code>True</code><code>)</code>

subprocess.Popen(...)

用于執行複雜的系統指令

參數:

args:shell指令,可以是字元串或者序列類型(如:list,元組)

bufsize:指定緩沖。0 無緩沖,1 行緩沖,其他 緩沖區大小,負值 系統緩沖

stdin, stdout, stderr:分别表示程式的标準輸入、輸出、錯誤句柄

preexec_fn:隻在Unix平台下有效,用于指定一個可執行對象(callable object),它将在子程序運作之前被調用

close_sfs:在windows平台下,如果close_fds被設定為True,則新建立的子程序将不會繼承父程序的輸入、輸出、錯誤管道。

是以不能将close_fds設定為True同時重定向子程序的标準輸入、輸出與錯誤(stdin, stdout, stderr)。

shell:同上

cwd:用于設定子程序的目前目錄

env:用于指定子程序的環境變量。如果env = None,子程序的環境變量将從父程序中繼承。

universal_newlines:不同系統的換行符不同,True -&gt; 同意使用 \n

startupinfo與createionflags隻在windows下有效

将被傳遞給底層的CreateProcess()函數,用于設定子程序的一些屬性,如:主視窗的外觀,程序的優先級等等

執行普通指令:

argpares子產品

argparse是python用于解析指令行參數和選項的标準子產品,用于代替已經過時的optparse子產品。argparse子產品的作用是用于解析指令行參數,例如python parseTest.py input.txt output.txt --user=name --port=8080。

二、使用步驟:

1:import argparse

2:parser = argparse.ArgumentParser()

3:parser.add_argument()

4:parser.parse_args()

解釋:首先導入該子產品;然後建立一個解析對象;然後向該對象中添加你要關注的指令行參數和選項,每一個add_argument方法對應一個你要關注的參數或選項;最後調用parse_args()方法進行解析

<code>def get_args():</code>

<code>    </code><code>parser = argparse.ArgumentParser()</code>

<code>    </code><code>parser.add_argument(</code><code>"-H"</code><code>, </code><code>"--host"</code><code>,help=</code><code>"host name"</code><code>)</code>

<code>    </code><code>parser.add_argument(</code><code>"-i"</code><code>, </code><code>"--ip"</code><code>, help=</code><code>"host ip"</code><code>)</code>

<code>    </code><code>parser.add_argument(</code><code>"-g"</code><code>, </code><code>"--group"</code><code>, help=</code><code>"group name"</code><code>)</code>

<code>    </code><code>parser.add_argument(</code><code>"-p"</code><code>, </code><code>"--proxy"</code><code>, help=</code><code>"proxy host name"</code><code>)</code>

<code>    </code><code>parser.add_argument(</code><code>"-t"</code><code>, </code><code>"--templates"</code><code>, help=</code><code>"template name"</code><code>)</code>

<code>    </code><code># 解析所傳入的參數</code>

<code>    </code><code>args = parser.parse_args()</code>

<code>    </code><code>return</code> <code>args</code>

本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1829694,如需轉載請自行聯系原作者