Python在自動化運維時經常會用到的方法

2022-08-17 15:09:13 字數 4180 閱讀 2761

得到當前工作目錄,即當前python指令碼工作的目錄路徑:os.getcwd()

返回指定目錄下的所有檔案和目錄名:os.listdir()

函式用來刪除乙個檔案:os.remove()

刪除多個目錄:osremovedirs(r"c:\python")  //略危險,熟練之後再用吧

檢驗給出的路徑是否是乙個檔案:os.path.isfile()   //經常會用

檢驗給出的路徑是否是乙個目錄:os.path.isdir()    //經常會用

判斷是否是絕對路徑:os.path.isabs()

檢驗給出的路徑是否真實存在:os.path.exists()

返回乙個路徑的目錄名和檔名:os.path.split()

例:import os 

os.path.split('/home/swaroop/byte/code/poem.txt')

結果為:('/home/swaroop/byte/code','poem.txt')     //就是把路徑和檔名分別列出來顯得更加清楚

分離副檔名:os.path.splitext()

獲取路徑名:os.path.dirname()

獲取檔名:os.path.basename()

執行shell命令:os.system()

讀取和設定環境變數:os.getenv()與os.putenv()

給出當前平台使用的行終止符:os.linesep   windows使用'\r\n',linux使用'\n'而mountainlion使用的是'\r'

顯示你正在使用的平台:os.name 對於windows,他是'nt',而對於linux/unix,他是'posix'

重新命名:os.rename(old,new)

建立多集目錄:os.makedirs(r"c:\python\test")

建立單個目錄:os.mkdir("test")

獲取檔案屬性 os.stat(file)

修改檔案許可權和時間戳:os.chmod(file)

終止當前程序:os.exit()  可用

獲取檔案大小:os.path.getsize(filename)

檔案操作:

os.mknod("test.txt")    建立空檔案

fp = open("test.txt",w) 直接開啟乙個檔案,如果檔案不存在則建立檔案

關於open/file的模式:

w 以寫的方式開啟

a 以追加的模式開啟(從eof開始,必要時建立新檔案)

r+ 以讀寫模式開啟

w+ 以讀寫模式開啟 //據說不好用

a+ 以讀寫模式開啟 //我比較喜歡用,讀寫開啟後追加

rb 以二進位制讀模式開啟

wb 以二進位制寫模式開啟

ab 以二進位制追加模式開啟

rb+ 以二進位制讀寫模式開啟

wb+ 以二進位制讀寫模式開啟

ab+ 以二進位制讀寫模式開啟

fp.read([size])     //size 為讀取長度,以byte為單位

fp.readline([size]) //讀一行,如果定義了size,有可能返回的只是一行的一部分

fp.write(str)    //把str寫到檔案中,write()並不會在str後加上乙個換行符

fp.writelines(seq) //把seq的內容全部寫到檔案中(多行一次性寫入)。這個函式也只是忠實地寫入,不會在每行後面加任何東西

fp.close()   

fp.flush()      //把緩衝區的內容寫入硬碟

fp.fileno()     //返回乙個長整形的「檔案標籤」

fp.isatty() //檔案是否是乙個終端裝置檔案(unix系統中的)

fp.tell() //返回當前位置,比如:

fp = open("zhige.txt",'a+')  裡的內容為zhigedahaoren

fp.read(3)

c = fp.tell()

print c   //會返回顯示zhigedahaoren裡的第三個字母i

fp.next()   //返回下一行,並將檔案操作標記位移動到下一行

把乙個file用於for...in file 這樣的語句時,就是呼叫next()函式來實現遍歷的

fp.seek(offset[,whence])   //講檔案的游標移動到offset的位置和tell搭配

做實驗看比較明顯

fp.truncate([size])    //把檔案裁成規定的大小,預設的是裁到當前檔案操作座標的位置。如果size比檔案大小還要大,依據系統的不同,可能是不改變檔案,也可能是用0把檔案補到相應的大小,也可能是以一些隨機的內容加上去。

目錄操作:   //感覺可以用 os.system('')裡寫shell完成

os.mkdir("file")  建立目錄

複製檔案:

shutil.copyfile("oldfile","newfile")  //oldfile和newfile都智慧型是檔案

shutil.copy("oldfile","newfile") //oldfile只能是檔案,newfile可

以是檔案,也可以是目標目錄

複製資料夾:

shutil.copytree("olddir","newdir") //olddir和newdir都只能是目錄,且newdir必須不存在

重新命名檔案(目錄):

os.rename("oldname","newname") //檔案或目錄都是這條命令

移動檔案(目錄)

shutil.move("oldpos","newpos")

刪除檔案

os.remove("file")

刪除目錄:

os.rmdir("dir")  //只能刪除空目錄

shutil.rmtree("dir") //空目錄,有內容的目錄都可以刪

轉換目錄:

os.chdir("path")   //更換路徑

一些詳解:

seek(offset,where): where=0從起始位置移動,1從當前位置移動,2

從結束位置移動。當有換行時,會被換行截斷。seek()無返回值,故值為none。

tell(): 檔案的當前位置,即tell是獲得檔案指標的位置,受

seek,readline,read,readlines影響,不受truncate影響

truncate(n):從檔案的首行字元開始截斷,截斷檔案為n個字元;無n表示從當前位置起截斷;階段之後n後面的說有字數被刪除。其中win下的換行代表2個字元大小。

readline(n):讀入若干行,n表示讀入的最長位元組數。其中讀取的開始位置為tell()+1。當n為空時,預設唯讀當前行的內容

readlines 讀入所有行內容

read 讀入所有行內容

二、以下以乙個例子說明以上各函式的作用

fso = open("f:\\a.txt",'w+')    //以w+方式,並非a方式開啟檔案,故檔案原內容被清空

print fso.tell()   //檔案原內容被清空,故此時tell()=0

fso.write("abcde\n") //寫入檔案abcde\n,因為換行\n佔2個字元,故寫入了7個字元

print fso.tell()  此時tell()=7

fso.write("fghwm") //又寫入檔案fghwm,故此時檔案共寫入7+5=12個字元

print fso.tell()   //此時tell()=12

fso.seek(1,0)  //從其實位置即檔案首行首字元開始移動乙個字元

print fso.tell()   //此時tell()=1

print fso.readline() //讀取當前行,即檔案的第一行,但是會從第二個字元開始讀,結果為bcde

//若換成for讀取整個檔案或者read讀取整個檔案則結果為bcdefghwm

print fso.tell()   //因為readline此時tell()=7

fso.truncate(8) //從寫入後檔案的首行字元開始算,截斷為8個字元,即

abced\nf,即檔案內容為:abcde\nf

print fso.tell()  //tell()依舊為7,並為受truncate(8)的影響,但此時檔案的內容為abcde\nf

print fso.readline()  //從tell()+1=8 開始讀取,讀取當前行內容:f

**:

運維自動化

1,cobbler安裝環境準備 安裝epel epel release 6 8.noarch.rpm x86 64 epel release 6 8.noarch.rpm x86 安裝系列依賴環境 要是區域網用,建議關閉iptables 或是放行25151 80 69埠 和關閉selinux 檢視狀...

自動化運維

考慮的因素 源 打包為映象 發布到映象庫 利用k8s發布到物理機器執行,以服務的形式對外提供服務 目前的做法 0 建立乙個執行遠端命令的框架 1 每個應用建立乙個部署檔案指令碼 a 指定元 位址 c 同步源 到目標主機 d 接受指令碼引數 vername 2 版本號,映象tag fromport 3...

Python 自動化運維 pycurl

web服務質量 1.服務可用性 2.服務響應速度 2.例項 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ...