用Python編寫shell腳本時經(jīng)常使用的函數(shù)的介紹
在計算機語言的實際應用中用Python編寫shell腳本這一實際應用的過程中是需要相關的函數(shù)的,在以下的文章里就會提及這一函數(shù)在Python編寫shell腳本的具體應用,以下是文章的具體介紹。
雖然我受*nix的影響甚深,但是對于*nix里隨處可見的sh腳本卻是討厭之極。為什么討厭呢?首先 是因為sh腳本那莫名其妙的語法,感覺就像隨寫隨扔的程序,完全沒有任何美感可言。其次是sh腳本的處理能力還是比較弱的,在文本處理、XML處理還有網(wǎng) 絡編程方面,基本上都要借助于perl,awk等一堆程序。
我對這些程序也是不大喜歡的,況且學習第三方軟件總要時間,還不如都用python好了。那,python可以做shell腳本嗎? 首先介紹一個函數(shù):
- os.system(command)
這個函數(shù)可以調用shell運行命令行command并且返回它的返回值。試一下在python的解釋器里輸入os.system(”ls -l”),就可以看到”ls”列出了當前目錄下的文件。可以說,通過這個函數(shù),python就擁有了shell的所有能力。不過,通常這條命令不 需要用到。因為shell常用的那些命令在python中通常有對應而且同樣簡潔的寫法。
shell中最常用的是ls命令,python對應的寫法是:os.listdir(dirname),這個函數(shù)返回字符串列表,里面是所有的文件名,不過不包含”.”和”..”。如果要遍歷整個目錄的話就會比較復雜一點。我們等下再說吧。先在解釋器里試一下:
- >>> os.listdir(”/”)
- [’tmp’, ‘misc’, ‘opt’, ‘root’, ‘.autorelabel’,
’sbin’, ’srv’, ‘.autofsck’, ‘mnt’, ‘usr’, ‘var’,
‘etc’, ’selinux’, ‘lib’, ‘net’, ‘lost+found’, ’sys’,
‘media’, ‘dev’, ‘proc’, ‘boot’, ‘home’, ‘bin’]
就像這樣,接下去所有命令都可以在python的解釋器里直接運行觀看結果。
對應于cp命令的是:shutil.copy(src,dest),這個函數(shù)有兩個參數(shù),參數(shù)src是指源文件的名字,參數(shù)dest則是目標文件或 者目標目錄的名字。 如果dest是一個目錄名,就會在那個目錄下創(chuàng)建一個相同名字的文件。與shutil.copy函數(shù)相類似的是 shutil.copy2(src,dest),不過copy2還會復制***存取時間和***更新時間。#t#
不過,shell的cp命令還可以復制目錄,python的shutil.copy卻不行,***個參數(shù)只能是一個文件。這怎么辦?其 實,python還有個shutil.copytree(src,dst[,symlinks]) 。參數(shù)多了一個symlinks,用Python編寫shell腳本是一個布爾值,如果是True的話就創(chuàng)建符號鏈接。
移動或者重命名文件和目錄呢?估計被聰明的朋友猜到了,shutil.move(src,dst),呵呵。。與mv命令類似,如果src和dst在 同一個文件系統(tǒng)上,shutil.move只是簡單改一下名字,如果src和dst在不同的文件系統(tǒng)上,shutil.move會先把src復制到 dst,然后刪除src文件??吹浆F(xiàn)在,大多數(shù)朋友應該已經(jīng)對python的能力有點眉目了。 以上就是對如何用Python編寫shell腳本相關的內(nèi)容的介紹,望你會有所收獲。