婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 基于python編寫的shell腳本詳細(xì)講解

基于python編寫的shell腳本詳細(xì)講解

熱門標(biāo)簽:徐州天音防封電銷卡 哈爾濱外呼系統(tǒng)代理商 南昌辦理400電話怎么安裝 不錯(cuò)的400電話辦理 鄭州智能外呼系統(tǒng)運(yùn)營(yíng)商 電話機(jī)器人適用業(yè)務(wù) 獲客智能電銷機(jī)器人 佛山防封外呼系統(tǒng)收費(fèi) 湛江電銷防封卡

今天同事叫我編寫一個(gè)shell腳本。話說,雖然我受*nix的影響甚深,但是對(duì)于*nix 里隨處可見的sh腳本卻是討厭之極。為什么討厭呢?首先是因?yàn)閟h腳本那莫名其妙的語(yǔ)法,感覺就像隨寫隨扔的程序,完全沒有任何美感可言。其次是sh腳本的處理能力還是比較弱的,在文本處理、XML處理還有網(wǎng)絡(luò)編程方面,基本上都要借助于perl,awk等一堆程序。我對(duì)這些程序也是不大喜歡的,況且學(xué)習(xí)第三方軟件總要時(shí)間,還不如都用python好了。

那,python可以做shell腳本嗎? 首先介紹一個(gè)函數(shù):

os.system(command)

這個(gè)函數(shù)可以調(diào)用shell運(yùn)行命令行command并且返回它的返回值。試一下在 python的解釋器里輸入os.system(”ls -l”),就可以看到”ls”列出了當(dāng)前目錄下的文件。可以說,通過這個(gè)函數(shù),python就擁有了shell的所有能力。呵呵。。不過,通常這條命令不需要用到。因?yàn)閟hell常用的那些命令在python中通常有對(duì)應(yīng)而且同樣簡(jiǎn)潔的寫法。

shell中最常用的是ls命令,python對(duì)應(yīng)的寫法是:os.listdir(dirname),這個(gè)函數(shù)返回字符串列表,里面是所有的文件名,不過不包含”.”和”..”。如果要遍歷整個(gè)目錄的話就會(huì)比較復(fù)雜一點(diǎn)。我們等下再說吧。先在解釋器里試一下:

>>> 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的解釋器里直接運(yùn)行觀看結(jié)果。

對(duì)應(yīng)于cp命令的是:shutil.copy(src,dest),這個(gè)函數(shù)有兩個(gè)參數(shù),參數(shù)src是指源文件的名字,參數(shù)dest則是目標(biāo)文件或者目標(biāo)目錄的名字。 如果dest是一個(gè)目錄名,就會(huì)在那個(gè)目錄下創(chuàng)建一個(gè)相同名字的文件。與shutil.copy函數(shù)相類似的是 shutil.copy2(src,dest),不過copy2還會(huì)復(fù)制最后存取時(shí)間和最后更新時(shí)間。

不過,shell的cp命令還可以復(fù)制目錄,python的shutil.copy卻不行,第一個(gè)參數(shù)只能是一個(gè)文件。這怎么辦?其實(shí),python還有個(gè)shutil.copytree(src,dst[,symlinks]) 。參數(shù)多了一個(gè)symlinks,它是一個(gè)布爾值,如果是True的話就創(chuàng)建符號(hào)鏈接。

移動(dòng)或者重命名文件和目錄呢?估計(jì)被聰明的朋友猜到了,shutil.move(src,dst),呵呵。。與mv命令類似,如果src和dst在同一個(gè)文件系統(tǒng)上,shutil.move只是簡(jiǎn)單改一下名字,如果src和dst在不同的文件系統(tǒng)上,shutil.move會(huì)先把src復(fù)制到dst,然后刪除src文件。看到現(xiàn)在,大多數(shù)朋友應(yīng)該已經(jīng)對(duì) python的能力有點(diǎn)眉目了,接下來我就列個(gè)表,介紹一下其它的函數(shù):

os.chdir(dirname)

把當(dāng)前工作目錄切換到dirname下

os.getcwd()

返回當(dāng)前的工作目錄路徑

os.chroot(dirname)

把dirname作為進(jìn)程的根目錄。和*nix下的chroot命令類似

os.chmod(path,mode)

更改path的權(quán)限位。mode可以是以下值(使用or)的組合:

os.S_ISUID
os.S_ISGID
os.S_ENFMT
os.S_ISVTX
os.S_IREAD
os.S_IWRITE
os.S_IEXEC
os.S_IRWXU
os.S_IRUSR
os.S_IWUSR
os.S_IXUSR
os.S_IRWXG
os.S_IRGRP
os.S_IWGRP
os.S_IXGRP
os.S_IRWXO
os.S_IROTH
os.S_IWOTH
os.S_IXOTH

具體它們是什么含義,就不仔細(xì)說了,基本上就是R代表讀,W代表寫,X代表執(zhí)行權(quán)限。USR 代表用戶,GRP代表組,OTH代表其它。

os.chown(path,uid,gid)

改變文件的屬主。uid和gid為-1的時(shí)候不改變?cè)瓉淼膶僦鳌?/p>

os.link(src,dst)

創(chuàng)建硬連接

os.mkdir(path,[mode])

創(chuàng)建目錄。mode的意義參見os.chmod(),默認(rèn)是0777

os.makedirs(path,[mode])

和os.mkdir()類似,不過會(huì)先創(chuàng)建不存在的父目錄。

os.readlink(path)

返回path這個(gè)符號(hào)鏈接所指向的路徑

os.remove(path)

刪除文件,不能用于刪除目錄

os.rmdir(path)

刪除文件夾,不能用于刪除文件

os.symlink(src,dst)

創(chuàng)建符號(hào)鏈接

shutil.rmtree(path[,ignore_errors[,onerror]])

刪除文件夾

介紹了這么多,其實(shí)只要查一下os和shutil兩個(gè)模塊的文檔就有了,呵呵。。真正編寫 shell腳本的時(shí)候還需要注意:

1.環(huán)境變量。python的環(huán)境變量保存在os.environ這個(gè)字典里,可以用普通字典的方法修改它,使用system啟動(dòng)其它程序的時(shí)候會(huì)自動(dòng)被繼承。比如:

os.environ[”fish”]=”nothing”
不過也要注意,環(huán)境變量的值只能是字符串。和shell有些不同的是,python沒有 export環(huán)境變量這個(gè)概念。為什么沒有呢?因?yàn)閜ython沒有必要有:-)

2.os.path這個(gè)模塊里包含了很多關(guān)于路徑名處理的函數(shù)。在shell里路徑名處理好像不是很重要,但是在python里經(jīng)常需要用到。最常用的兩個(gè)是分離和合并目錄名和文件名:

os.path.split(path) -> (dirname,basename)
這個(gè)函數(shù)會(huì)把一個(gè)路徑分離為兩部分,比如:os.path.split(”/foo /bar.dat”)會(huì)返回(”/foo”,”bar.dat”)

os.path.join(dirname,basename)
這個(gè)函數(shù)會(huì)把目錄名和文件名組合成一個(gè)完整的路徑名,比如:os.path.join(”/foo”,”bar.dat”)會(huì)返回”/foo/bar.dat”。這個(gè)函數(shù)和os.path.split()剛好相反。

還有這些函數(shù):

os.path.abspath(path)

把path轉(zhuǎn)成絕對(duì)路徑

os.path.expanduser(path)

把path中包含的”~”和”~user”轉(zhuǎn)換成用戶目錄

os.path.expandvars(path)

根據(jù)環(huán)境變量的值替換path中包含的”$name”和”${name}”,比如環(huán)境變量 FISH=nothing,那os.path.expandvars(”$FISH/abc”)會(huì)返回”nothing/abc”

os.path.normpath(path)

去掉path中包含的”.”和”..”

os.path.splitext(path)

把path分離成基本名和擴(kuò)展名。比如:os.path.splitext(”/foo /bar.tar.bz2″)返回('/foo/bar.tar', ‘.bz2′)。要注意它和os.path.split()的區(qū)別

3.在os模塊有一個(gè)很好用的函數(shù)叫os.stat()沒有介紹,因?yàn)閛s.path模塊里包含了一組和它具有同樣功能的函數(shù),但是名字更好記一點(diǎn)。

os.path.exists(path)

判斷文件或者目錄是否存在

os.path.isfile()

判斷path所指向的是否是一個(gè)普通文件,而不是目錄

os.path.isdir(path)

判斷path所指向的是否是一個(gè)目錄,而不是普通文件

os.path.islink(path)

判斷path所指向的是否是一個(gè)符號(hào)鏈接

os.path.ismount(path)

判斷path所指向的是否是一個(gè)掛接點(diǎn)(mount point)

os.path.getatime(path)

返回path所指向的文件或者目錄的最后存取時(shí)間。

os.path.getmtime(path)

返回path所指向的文件或者目錄的最后修改時(shí)間

os.path.getctime(path)

返回path所指向的文件的創(chuàng)建時(shí)間

os.path.getsize(path)

返回path所指向的文件的大小

4.應(yīng)用python編寫shell腳本經(jīng)常要用到os,shutil,glob(正則表達(dá)式的文件名),tempfile(臨時(shí)文件),pwd(操作/etc/passwd文件),grp(操作/etc/group文件),commands(取得一個(gè)命令的輸出)。前面兩個(gè)已經(jīng)基本上介紹完了,后面幾個(gè)很簡(jiǎn)單,看一下文檔就可以了。

5.sys.argv是一個(gè)列表,保存了python程序的命令行參數(shù)。其中 sys.argv[0]是程序本身的名字。
不能光說不練,接下來我們就編寫一個(gè)用于復(fù)制文件的簡(jiǎn)單腳本。前兩天叫我寫腳本的同事有個(gè)幾萬個(gè)文件的目錄,他想復(fù)制這些文件到其它的目錄,又不能直接復(fù)制目錄本身。他試了一下”cp src/* dest/”結(jié)果報(bào)了一個(gè)命令行太長(zhǎng)的錯(cuò)誤,讓我?guī)退麑懸粋€(gè)腳本。操起python來:

import sys,os.path,shutil
for f in os.listdir(sys.argv[1]):
shutil.copy(os.path.join(sys.argv[1],f),sys.argv[2])

再試一下linuxapp版里的帖子——把一個(gè)文件夾下的所有文件重命名成 10001~10999。可以這樣寫:

import os.path,sys
dirname=sys.argv[1]
i=10001
for f in os.listdir(dirname):
src=os.path.join(dirname,f)
if os.path.isdir(src):
continue
os.rename(src,str(i))
i =1

os.chkdir(path) 轉(zhuǎn)換到目錄path 下。

os.system('md a') 可以直接創(chuàng)建目錄。

os.name字符串指示你正在使用的平臺(tái)。比如對(duì)于Windows,它是'nt',而對(duì)于Linux/Unix用戶,它是'posix'。
● os.getcwd()函數(shù)得到當(dāng)前工作目錄,即當(dāng)前Python腳本工作的目錄路徑。
● os.getenv()和os.putenv()函數(shù)分別用來讀取和設(shè)置環(huán)境變量。
● os.listdir()返回指定目錄下的所有文件和目錄名。
● os.remove()函數(shù)用來刪除一個(gè)文件。
● os.system()函數(shù)用來運(yùn)行shell命令。
● os.linesep字符串給出當(dāng)前平臺(tái)使用的行終止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
● os.path.split()函數(shù)返回一個(gè)路徑的目錄名和文件名。
>>> os.path.split('/home/swaroop/byte/code/poem.txt')
('/home/swaroop/byte/code', 'poem.txt')
● os.path.isfile()和os.path.isdir()函數(shù)分別檢驗(yàn)給出的路徑是一個(gè)文件還是目錄。類似地,os.path.exists()函數(shù)用來檢驗(yàn)給出的路徑是否真地存在。

文件重定向

已有PY文件new1.py ,在命令行下輸入:new1>new.txt 可以將new1運(yùn)行的結(jié)果輸出到文件new.txt,這稱為流重定向。

標(biāo)簽:吉安 懷化 呂梁 安康 蘭州 紹興 蕪湖 廣西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于python編寫的shell腳本詳細(xì)講解》,本文關(guān)鍵詞  基于,python,編,寫的,shell,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于python編寫的shell腳本詳細(xì)講解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于基于python編寫的shell腳本詳細(xì)講解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    免费观看在线综合| 亚洲综合色丁香婷婷六月图片| 国产成人av自拍| 国产精品第四页| 欧美日韩精品一区二区三区四区 | 奇米影视一区二区三区| 欧美精品一区二区三区在线| 国产91在线看| 一区二区三区精品在线| 日韩女同互慰一区二区| 99精品国产一区二区三区不卡| 亚洲一区影音先锋| 精品国产一区二区亚洲人成毛片| 成人性生交大片免费看中文| 亚洲欧美激情一区二区| 精品国产凹凸成av人导航| 国产精品资源站在线| 性感美女极品91精品| 中文字幕av资源一区| 欧美日韩国产另类一区| 国产美女在线观看一区| 午夜一区二区三区在线观看| 久久久久久久久久看片| 欧美日韩国产三级| 99视频超级精品| 日韩电影在线免费| 亚洲特级片在线| 久久婷婷成人综合色| 欧美自拍偷拍一区| 丁香一区二区三区| 久久国产乱子精品免费女| 国产精品护士白丝一区av| 久久一夜天堂av一区二区三区| 欧美视频三区在线播放| 波多野结衣在线aⅴ中文字幕不卡| 日韩国产欧美三级| 亚洲免费av在线| 国产精品免费网站在线观看| 欧美乱妇一区二区三区不卡视频| 99久久99久久精品免费看蜜桃| 精品一区二区日韩| 奇米888四色在线精品| 亚洲精品视频自拍| 中文字幕 久热精品 视频在线| 欧美成人a∨高清免费观看| 欧美卡1卡2卡| 日本乱人伦一区| 不卡电影免费在线播放一区| 国产在线观看免费一区| 日本不卡在线视频| 亚洲色图在线看| 综合久久久久久| 国产精品福利一区| 国产精品大尺度| 亚洲国产精品国自产拍av| 2023国产精品视频| 精品999在线播放| 久久综合成人精品亚洲另类欧美| 欧美一区二区三区在线观看视频| 欧美日韩高清一区二区不卡 | 国产在线看一区| 久久黄色级2电影| 精品一区二区在线免费观看| 爽爽淫人综合网网站| 日韩av不卡一区二区| 免费精品99久久国产综合精品| 日韩福利电影在线观看| 免费在线观看视频一区| 蜜臀av性久久久久蜜臀aⅴ流畅| 午夜av一区二区| 午夜电影一区二区| 久久精品国产网站| 午夜不卡av在线| 另类人妖一区二区av| 首页综合国产亚洲丝袜| 韩国精品一区二区| 国产成人综合在线播放| 成人黄色在线网站| 欧洲av在线精品| 欧美日韩精品一区二区天天拍小说| 欧美日本在线播放| 精品国产一区二区三区忘忧草| 精品99一区二区三区| 国产精品―色哟哟| 亚洲午夜影视影院在线观看| 亚洲男同性恋视频| 亚洲成人1区2区| 国产综合久久久久久久久久久久| 国产精品一区二区你懂的| 成人精品在线视频观看| 亚洲一区av在线| 韩国女主播一区| 欧美日韩国产影片| 中文字幕日韩一区| 极品少妇xxxx精品少妇偷拍| 91官网在线免费观看| 久久精品一区二区三区四区| 日韩综合一区二区| 一本色道综合亚洲| 久久久国产精华| 欧美aaaaa成人免费观看视频| 99久久免费国产| 亚洲精品一区二区三区在线观看 | 欧美性xxxxxxxx| 国产精品午夜春色av| 精品一二三四在线| 正在播放亚洲一区| 亚洲精品久久久蜜桃| 国产99久久久久| 亚洲精品在线电影| 久久精品国产精品亚洲红杏| 一区二区三区国产精品| 一区二区三区日韩在线观看| 不卡视频免费播放| 亚洲国产精品v| 国产一区二区在线观看免费| 欧美一区二区精品久久911| 一区二区激情小说| 99天天综合性| 中文字幕一区日韩精品欧美| 粉嫩欧美一区二区三区高清影视| 久久这里只有精品6| 精品一区二区三区免费毛片爱| 91丝袜高跟美女视频| 欧美日韩一级二级| 亚洲一区二区三区在线看| av电影一区二区| 日韩一区在线免费观看| 丁香一区二区三区| 国产精品乱码人人做人人爱| 福利一区在线观看| 久久九九国产精品| 不卡一区二区在线| 国产精品网站在线观看| 99riav久久精品riav| 亚洲精品水蜜桃| 欧美伊人精品成人久久综合97| 亚洲福利视频三区| 欧美日韩高清一区二区三区| 日韩精品亚洲专区| 日韩欧美在线123| 激情成人综合网| 国产日产亚洲精品系列| 99精品一区二区三区| 亚洲精品五月天| 欧美日韩精品一区二区三区蜜桃 | 91蝌蚪porny成人天涯| 成人欧美一区二区三区| 色婷婷av一区二区三区之一色屋| 亚洲男女毛片无遮挡| 欧美日本国产视频| 激情另类小说区图片区视频区| 久久婷婷久久一区二区三区| 成人av在线网站| 亚洲青青青在线视频| 欧美精品久久天天躁| 精品一区二区三区在线观看国产 | 高清日韩电视剧大全免费| 国产精品二区一区二区aⅴ污介绍| 91丨porny丨国产| 午夜精品在线视频一区| 精品久久久久久久久久久久久久久| 狠狠色丁香久久婷婷综合_中| 欧美经典一区二区| 在线观看av一区二区| 麻豆成人av在线| 国产精品女主播av| 在线综合视频播放| 成人黄色网址在线观看| 石原莉奈在线亚洲二区| 国产欧美一区二区精品婷婷| 欧美亚洲动漫精品| 国产乱码精品一区二区三区av | 丰满亚洲少妇av| 亚洲第一狼人社区| 中文字幕精品一区二区精品绿巨人 | 欧美亚洲免费在线一区| 久久99精品国产91久久来源| 亚洲欧洲日韩女同| 欧美电影精品一区二区| 色综合久久久久综合体桃花网| 久久精品99国产精品| 曰韩精品一区二区| 国产偷国产偷亚洲高清人白洁| 日韩一区二区三区视频在线观看| 久久精品日韩一区二区三区| 欧美男女性生活在线直播观看| 国产一区二区视频在线| 亚洲一区二区三区视频在线播放 | **欧美大码日韩| 欧美va亚洲va在线观看蝴蝶网| 色欧美片视频在线观看在线视频| 久久国产综合精品| 亚洲h动漫在线| 亚洲欧美日韩人成在线播放| 久久九九国产精品| 日韩你懂的电影在线观看| 欧美无砖砖区免费| av成人免费在线观看| 国产精品自在在线|